5

我有一个使用 FluentSecurity 的 ASP.NET MVC 网站。作为 Azure 网站,它运行良好。我需要将其设为 WebRole。我添加了一个 WebRole 项目,但 WebRole 在启动时失败,并显示“由于发生内部服务器错误,无法显示页面”。

我根据http://blog.mariusschulz.com/setting-up-fluentsecurity-to-use-ninject-for-dependency-resolutionDenyAnonymousAccessPolicyViolationHandler有一个并RequireRolePolicyViolationHandler实施和整个 FluentSecurity 设置。IPolicyViolationHandler

我发现当我删除两个实现的类时,IPolicyViolationHandlerWebRole 开始就好了。我创建了一个演示此问题的示例项目,您可以在https://dl.dropboxusercontent.com/u/73642/MvcApplication1.zip找到它。

那么如何让 FluentSecurity 与 Azure WebRole 一起工作,包括我的策略类?

4

1 回答 1

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>
于 2013-10-02T16:13:52.897 回答