Asp.net &引用;动态操作只能在同质AppDomain中执行;错误

Asp.net &引用;动态操作只能在同质AppDomain中执行;错误,asp.net,asp.net-mvc-3,asp.net-mvc-2,Asp.net,Asp.net Mvc 3,Asp.net Mvc 2,在我的locahost上运行MVC3站点时出现此错误。这是一个新创建的MVC3站点,HomeControllerIndex方法是在ViewBag.Message分配中抛出它的方法 public ActionResult Index() { ViewBag.Message = "Welcome to ASP.NET MVC!"; return View(); } 堆栈跟踪: at System.Runtime.CompilerServices.CallSiteBinder.Bin

在我的locahost上运行MVC3站点时出现此错误。这是一个新创建的MVC3站点,
HomeController
Index
方法是在
ViewBag.Message
分配中抛出它的方法

public ActionResult Index()
{
    ViewBag.Message = "Welcome to ASP.NET MVC!";
    return View();
}
堆栈跟踪:

at System.Runtime.CompilerServices.CallSiteBinder.BindCore[T](CallSite`1 site, Object[] args)
at System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet](CallSite site, T0 arg0, T1 arg1)
at MVC3.Web.UI.Controllers.HomeController.Index() in C:\Users\mccarthy\Documents\Visual Studio 2010\Projects\MVC3\MVC3.Web.UI\Controllers\HomeController.cs:line 13
at lambda_method(Closure , ControllerBase , Object[] )
at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
在System.Runtime.CompilerServices.CallSiteBinder.BindCore[T](CallSite`1站点,对象[]args)
在System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet](调用站点,T0 arg0,T1 arg1)
在C:\Users\mccarthy\Documents\Visual Studio 2010\Projects\MVC3\MVC3.Web.UI\Controllers\HomeController.cs中的MVC3.Web.Controllers.HomeController.Index()处:第13行
在lambda_方法中(闭包、控制器基、对象[])
位于System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller,Object[]参数)
位于System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext ControllerContext,IDictionary`2参数)
位于System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext ControllerContext,ActionDescriptor ActionDescriptor,IDictionary`2参数)
在System.Web.Mvc.ControllerActionInvoker.c_uuDisplayClass15.b_uuu12()中
位于System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter筛选器、ActionExecutingContext预文本、Func`1 continuation)
我不知道这个错误是什么,以前也没见过。当我启动一个新的MVC2项目时(直到现在我一直在使用这个项目),这个站点运行得很好


Microsoft在处理MVC3和MVC2框架之间的安全性方面有什么不同吗?

好的,如果您的web.config中有以下行:

这种类型的错误可能会发生。然而,在PHeiberg提供给我的链接中,它说该行可能在web.config中。我的web.config没有它

因此,我在machine.config中查看了代码行!我把它注释掉了,现在我可以运行我的MVC3应用程序了


我不太确定它是如何在machine.config中结束的,或者我在评论它时可能破坏了什么,但是这个直接的问题已经解决了。

这可能会让我感到有些不安。谢谢你给我指出那个链接。不过,我的方案有点不同。在我的web.config中没有明确设置
。所以我查看了我的machine.config文件,你瞧,它就在那里!我把它注释掉了,MVC3应用程序现在运行了。谢谢如果您在基于Windows窗体的项目中遇到类似问题,请在app.config文件中注释这一行:我在窗体项目中遇到此问题。。。但不幸的是,我无法更改安全策略设置,因为我还使用POS.NET,没有它就无法工作。难道你不知道还有什么可以尝试吗?@Ashley你知道你能做什么吗?@skaz我的解决方案最终是因为你可以为每个AppDomain设置遗留安全策略选项。因此,我从app.config中删除了该选项,并创建了第二个AppDomain,该选项在运行时设置为纯粹用于托管POS.NET。我会发布我的代码,但它与原始帖子并不相关。重要的部分是使用AppDomainSetup创建您自己的AppDomain,您在AppDomainSetup上调用了“SetCompatibilitySwitches(new[]{“NetFx40_LegacySecurityPolicy”}”。@skaz我在启动时设置了它,因为在我进行更改之前是这样的:我获得了一个PosExplorer实例(包装在另一个类中)并在程序的生命周期内保持它。现在唯一的区别是我在远程AppDomain中创建它,并通过代理(包装类接口的代理)访问它。它引入了一个或两个编组难题,但总的来说,对我来说并没有太多麻烦。我必须将包装器类更改为从MarshallByRefObject继承,并使用Client赞助商确保检索到的任何设备对象保持活动状态。