我刚刚在Azure上发布了我的新ASP.NET MVC网站,其中包含Identity和OWIN授权。前端工作得很好,但后端有问题。我在管理员控制器中使用[Authorize]属性来检查用户是否具有访问它的必需角色,如下所示:
[Authorize(Roles = "Admin")]
在localhost上,即使使用远程Azure SQL数据库也可以。 但是在Azure上,任何具有authorize属性且带有角色的控制器都会加载几分钟然后抛出:
建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:26 - 查找指定的服务器/实例时出错)
没有角色的授权属性可以正常工作。
答案 0 :(得分:15)
将此代码添加到web.config可以解决问题。
<system.webServer>
<modules>
<remove name="RoleManager" />
</modules>
</system.webServer>
我知道现在已经很晚了,但我有一个真正的答案。无论如何我还是想分享它,因为我自己就浪费了几个小时。
找到的信息答案 1 :(得分:1)
没有真正解决Azure问题,最终编写了我自己的授权属性。问题似乎出现在User.IsInRole()方法中,所以请避免使用它。
答案 2 :(得分:0)
我遇到了类似的问题,因为我使用的是旧形式的身份:<rolemanager>
。如果您使用的是asp.net身份2,那么您希望禁用<rolemanager>
(默认情况下也是如此 - 即在您的web.config中没有引用它)。