Asp.net mvc 4 调用WebApi控制器操作,导致继承安全规则违反HostedHttpRouteData.get_路由(

Asp.net mvc 4 调用WebApi控制器操作,导致继承安全规则违反HostedHttpRouteData.get_路由(,asp.net-mvc-4,asp.net-web-api,routing,unity-container,Asp.net Mvc 4,Asp.net Web Api,Routing,Unity Container,我有一个.NETMVC4项目,我为ajax调用添加了一个WebApi控制器和一个基本操作 当我调用该方法时,我得到: 重写成员时违反了继承安全规则: 'System.Web.Http.WebHost.Routing.HostedHttpRouteData.get_Route()'。 重写方法的安全可访问性必须与 正在重写的方法的安全可访问性 我还没有做任何自定义修改,也没有设置任何web Api可以工作的东西(我应该这样做吗?) 我注意到DefaultApi路由在我的routeConfig中。

我有一个.NETMVC4项目,我为ajax调用添加了一个WebApi控制器和一个基本操作

当我调用该方法时,我得到:

重写成员时违反了继承安全规则: 'System.Web.Http.WebHost.Routing.HostedHttpRouteData.get_Route()'。 重写方法的安全可访问性必须与 正在重写的方法的安全可访问性

我还没有做任何自定义修改,也没有设置任何web Api可以工作的东西(我应该这样做吗?)

我注意到DefaultApi路由在我的routeConfig中。 我还使用UnityMVC4和UnityWebAPI包(我已经禁用了它来测试它是否导致了问题,但似乎没有)

我的控制器是TestController

行动:

public bool ClearAwaitingNotifications()
{}
&ajax调用将:
api/test/ClearWaitingNotifications


如何修复此问题?

在点击控制器时发生异常,原因是:

WebApiConfig.Register(GlobalConfiguration.Configuration);
虽然路由存在于我的Routeconfig.cs中,但从未调用。我认为发生这种情况是因为我使用模板安装了Mvc4项目,该模板安装了一些WebApi内容,而且有点旧。然后我将这一行添加到Global.ascx中,并收到了相同的安全警告,但这一行在Global.ascx中


然后帮我解决了这个问题,现在一切都正常了。简言之,这是因为安装了带有模板的Mvc project,或者是因为webapi 4中的一个库已经过时。

我猜,您在不支持完全信任应用程序的共享主机上遇到了此错误?请尝试添加
[assembly:System.Security.AllowPartiallyTrustedCallers]
到您的调用程序集。@Darinditrov Nop仅在localhost:-).Hmm导致另一个错误:“尝试使用安全透明方法”MvcWebsite.Bootstrapper.Initialise”程序集用AllowPartiallyTrustedCallersAttribute标记,并使用级别2安全透明模型。级别2透明会导致AllowPartiallyTrustedCallers程序集中的所有方法默认为安全透明,这可能是导致此异常的原因。此
[assembly:System.security.SecurityRules]如何(System.Security.SecurityRuleSet.Level2,skipverificationfulltrust=true)]
?@DarinDimitrov再次感谢。这次没有运行时错误,但原始异常仍在发生:-(。