自定义角色提供者。未检测到用户名

Custom Role Provider. Username not being detected

我已经在 C# MVC 应用程序中实现了客户角色提供程序。

它似乎没有检测到 Windows 用户。

昨天运行良好。

它的配置如下所示:

  <system.web>
    <authentication mode="Windows" />
    <roleManager defaultProvider="MyRoleProvider" enabled="true">
      <providers>
        <clear />
        <add name="MyRoleProvider" type="CWC_Service_Plan.Security.MyRoleProvider" />
      </providers>
    </roleManager>
    <compilation debug="true" targetFramework="4.5.1" />
    <httpRuntime targetFramework="4.5.1" />
  </system.web>

但是在代码中添加一个断点我可以看到没有检测到用户。

我一定是在不知不觉中改变了什么。可能是什么原因造成的?

[编辑]

角色提供者通过获取 Windows 用户名然后使用它进行身份验证来工作。

如果无法获取用户名,则不会进行身份验证。

问题是为什么用户名没有被提取,我认为这是一个大问题,所以所有的建议都是很好的建议。

[/编辑]

您是否禁用了匿名访问

参见Configuring Windows Authentication

  1. 启动 Internet 信息服务 (IIS)。
  2. 右键单击应用程序的虚拟目录,然后单击“属性”。
  3. 单击目录安全选项卡。
  4. 在匿名访问和身份验证控制下,单击编辑。
  5. 确保匿名访问复选框未被 select 选中并且集成 1。Windows 身份验证是唯一 select 选中的复选框。

这也适用于Visual Studio,它是web项目的属性(selectweb项目并按F4):