2013-12-17 64 views
0

我有一個.net Mvc4項目,我添加了一個的WebAPI控制器和爲Ajax調用一個基本的行動繼承的安全規則。調用的WebAPI控制器的動作,導致侵犯HostedHttpRouteData.get_Route(

當我打電話方法獲得:

Inheritance security rules violated while overriding member: 'System.Web.Http.WebHost.Routing.HostedHttpRouteData.get_Route()'. Security accessibility of the overriding method must match the security accessibility of the method being overriden.

我還沒有做出任何自定義修改或設置爲任何網絡API工作(是我應該?)

我注意到DefaultApi路線是我routeConfig 。我也在使用Unity Mvc4 & Unity Web Api軟件包,(我禁用它來測試它是否導致問題,但似乎不是)。

我的控制器的TestController

行動:

public bool ClearAwaitingNotifications() 
{} 

& Ajax調用要:api/test/clearawaitingnotifications

我該如何解決這個問題?打控制器時,因爲

+0

而我們猜測,您在共享主機上收到此錯誤不支持完全信任的應用程序?嘗試將'[assembly:System.Security.AllowPartiallyTrustedCallers]'添加到您的調用程序集中。 –

+0

@DarinDimitrov Nop就在localhost :-)。嗯,導致了另一個錯誤:「嘗試通過安全透明方法'MvcWebsite.Bootstrapper.Initialise」程序集標記爲AllowPartiallyTrustedCallersAttribute,並使用2級安全透明度模型。級別2的透明度會導致AllowPartiallyTrustedCallers程序集中的所有方法在默認情況下變爲安全透明,這可能是此異常的原因。 – Baconbeastnz

+0

這個'[程序集:System.Security.SecurityRules(System.Security.SecurityRuleSet.Level2,SkipVerificationInFullTrust = true)]'? –

回答

0

我出現異常:

WebApiConfig.Register(GlobalConfiguration.Configuration); 

從來沒有所謂,雖然路線我Routeconfig.cs裏面存在。我認爲這是因爲我使用模板安裝了我的Mvc4項目,該模板安裝了一些WebApi的東西,並且它有點老了。然後,我將此行添加到Global.ascx中,並收到了與Global.ascx中的此行相同的安全警告。

https://stackoverflow.com/a/18713412/314963然後幫我解決了這個問題,現在一切正常。簡而言之,這是因爲在模板中安裝了Mvc項目,或者因爲webapi 4中的某個庫過時了。