ASP.NET标识:具有角色的Authorize属性在Azure上不起作用

Won*_*der 5 asp.net asp.net-mvc azure asp.net-identity

我刚刚在Azure上发布了我的新ASP.NET MVC网站,其中包含Identity和OWIN授权.前端工作得很好,但后端有问题.我在管理员控制器中使用[Authorize]属性来检查用户是否具有访问它的必需角色,如下所示:

[Authorize(Roles = "Admin")]
Run Code Online (Sandbox Code Playgroud)

在localhost上即使使用远程Azure SQL数据库也可以正常工作.但是在Azure上,任何具有authorize属性且带有角色的控制器都会加载几分钟然后抛出:

建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供程序:SQL网络接口,错误:26 - 查找指定的服务器/实例时出错)

没有角色的授权属性工作正常.

Rob*_*ert 16

将此代码添加到web.config可以解决此问题.

<system.webServer>
    <modules>
        <remove name="RoleManager" />
    </modules>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

我知道现在已经晚了,但我有一个真正的答案.我以为我会分享它,因为我自己就浪费了几个小时.

这篇文章中找到的信息


Won*_*der 1

没有真正解决Azure问题,最终编写了我自己的授权属性。问题似乎出在User.IsInRole()方法上,所以就避免它吧。