I'm trying to get an ASP.NET MVC app working on GoDaddy ... I should have known it wouldn't be easy. The first few pages work, but they are all static. The first time a Controller is executed I get the exception below.
Here is the Controller action method:
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Index(Section? section, int? parent)
{
if (section == null)
{
return RedirectToAction("Index", "Questions", new {section = Section.Section0});
}
IPagedList<Question> questions = _surveyService.FetchQuestions(User.Identity.Name, section.Value, parent);
// ...
ViewResult result = View("Index", questions);
result.ViewData.Add("CurrentSection", section.Value);
result.ViewData.Add("Parent", parent);
result.ViewData.Add("IsLastPage", questions.IsLastPage);
return result;
}
The exception is thrown in the second line of the method at RedirectToAction().
Background:
- I've followed the instructions in this answer.
- I'm not using reflection or demanding security explicitly in my code.
- I'm using MVC, LINQ to SQL, Elmah, and PagedList.
- I'm using IIS 7 with Integrated mode.
- I added [assembly: AllowPartiallyTrustedCallers] to my AssemblyInfo.cs. I did this because I found another SO question that had an answer recommending it (I can't find it now, or else I would provide a link). I also strong named my assemblies as suggested by Rex M's answer below.
What am I missing to make this work?
The exception:
Server Error in '/surveys/objectification' Application.
Security Exception
Description: The application attempted to perform an operation not allowed by the security policy. To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file.
Exception Details: System.Security.SecurityException: That assembly does not allow partially trusted callers.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[SecurityException: That assembly does not allow partially trusted callers.]
SelfObjectificationSurvey.Web.Controllers.QuestionsController.Index(Nullable`1 section, Nullable`1 parent) +0
lambda_method(ExecutionScope , ControllerBase , Object[] ) +123
System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +17
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +178
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +24
System.Web.Mvc.<>c__DisplayClassa.<InvokeActionMethodWithFilters>b__7()
+53
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +258
System.Web.Mvc.<>c__DisplayClassc.<InvokeActionMethodWithFilters>b__9()
+20
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +193
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)
+382
System.Web.Mvc.Controller.ExecuteCore()
+123
System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +23
System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +7
System.Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase httpContext) +144
System.Web.Mvc.MvcHandler.ProcessRequest(HttpContext httpContext) +54
System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext httpContext) +7
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
+181
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
+75
Version Information: Microsoft .NET Framework Version:2.0.50727.3074; ASP.NET Version:2.0.50727.4049