Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Authorize属性在带有OWIN的Azure上不起作用_C#_Azure_Asp.net Mvc 5_Asp.net Identity - Fatal编程技术网

C# Authorize属性在带有OWIN的Azure上不起作用

C# Authorize属性在带有OWIN的Azure上不起作用,c#,azure,asp.net-mvc-5,asp.net-identity,C#,Azure,Asp.net Mvc 5,Asp.net Identity,我已将在Windows Azure云服务中运行的web应用程序从默认成员资格系统从MVC 4模板迁移到新的基于OWIN的ASP.NET身份提供程序 应用程序严重依赖于角色,由于某种原因,这些角色在升级后已停止在Azure上工作 我的控制器或操作用[Authorize]修饰。这很好,除非我指定一个角色[Authorize(Roles=“User.Test”)]并在Azure compute emulator中运行它。现在,我将获得无限重定向到登录页面并返回(我已登录,但由于某些原因它不接受该角色)

我已将在Windows Azure云服务中运行的web应用程序从默认成员资格系统从MVC 4模板迁移到新的基于OWIN的ASP.NET身份提供程序

应用程序严重依赖于角色,由于某种原因,这些角色在升级后已停止在Azure上工作

我的控制器或操作用
[Authorize]
修饰。这很好,除非我指定一个角色
[Authorize(Roles=“User.Test”)]
并在Azure compute emulator中运行它。现在,我将获得无限重定向到登录页面并返回(我已登录,但由于某些原因它不接受该角色)。 有趣的是,如果我直接调试/运行web项目(因此不使用Azure emulator),一切都可以正常工作

关于如何让它在Azure上工作,有什么想法吗?我还没有在其他方面有过这种行为,所以这让我有些不知所措

2013年11月26日更新


我在VS2013中发现了与默认MVC5模板类似的行为。有关如何在不使用Azure的情况下重现此问题的步骤,请参见本文。

好的,出于某种原因,我使用MyGet的Owin和标识库的预发行版自己造成了整个混乱


删除所有软件包并安装稳定版本修复了我的所有问题。

这一个解决了我的问题:

<system.webServer>
    <modules>
      <remove name="RoleManager" /> <!-- <<<<< -->


您是否已检查Azure中使用的数据库是否在AspNetUserRoles中有正确的行,以及AspNetUsers表中连接到用户的AspNetRoles?Authorize属性和User.IsInRole在比较时区分大小写。@OlavNybø,是的,这都是正确的。@jd4u,我知道这一点。案例完全相同。更改当前用户的角色需要您重新创建ClaimsEntity以处理后续请求。角色检查是根据身份验证过程中填充的ClaimSideEntity.Claims进行的。