2013-07-16 100 views
5

我有一個使用FluentSecurity的ASP.NET MVC網站。作爲一個Azure網站,它工作得很好。我需要使它成爲WebRole。我添加了一個WebRole項目,但WebRole在啓動時出現了一個通用的「由於發生內部服務器錯誤,無法顯示該頁面」。FluentSecurity使Azure WebRole失敗

我有一個DenyAnonymousAccessPolicyViolationHandlerRequireRolePolicyViolationHandler實施IPolicyViolationHandler和整個FluentSecurity設置根據http://blog.mariusschulz.com/setting-up-fluentsecurity-to-use-ninject-for-dependency-resolution

我發現,當我刪除這兩個類實現IPolicyViolationHandler然後然後WebRole啓動就好了。我創建了一個示例項目來演示這個問題,你可以在https://dl.dropboxusercontent.com/u/73642/MvcApplication1.zip找到它。

那麼,我如何才能使用Azure WebRole獲得FluentSecurity工作,包括我的策略類?

+1

你有沒有找到一個解決這個?我與我的DenyAnonymousAccessPolicyViolationHandler有完全相同的問題。 – Faraday

+0

我沒有。我在Github上報告了這個錯誤,我沒有迴應 –

回答

0

我們有同樣的問題;在網站上工作,但不在Web角色中工作。

這是因爲Fluent Security引用了MVC3而不是MVC4。對Github上這個錯誤的評論進一步詳述https://github.com/kristofferahl/FluentSecurity/pull/39

您可以:

1)取FluentSecurity.csproj的本地副本和升級它的System.Web.MVC參考MVC 4,然後將其包含在您的解決方案(這就是我們所做的那樣)。

2)或者,按照上面的Github的錯誤鏈接「......解決這個用匯編重定向在你的web.config」像這樣

<runtime> 
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
    <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> 
    <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
    </dependentAssembly> 
    <dependentAssembly> 
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
    <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> 
    </dependentAssembly> 
    <dependentAssembly> 
    <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /> 
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
    </dependentAssembly> 
</runtime>