我的 Web 应用程序拒绝本地 Windows 帐户的 Windows 身份验证

My web application is rejecting Windows authentication for a local Windows account

我的问题是我的服务只允许我自己的 Windows 帐户连接到它,但我想允许来自任何有效 Windows 域帐户的连接。我的服务托管在 IIS Express 中。当我浏览到 Google Chrome 中的 https://localhost:44300/FileRetrievalService.svc/get 时,我看到我的 [WebGet] 方法被调用得很好。当我尝试向它创建 Web 请求时,它也可以工作,只要我指定我自己的 Windows 用户帐户:

WebRequest request = WebRequest.Create(url);
request.Method = "GET";
request.Headers.Add("Path", filePath);
request.Credentials = new NetworkCredential("username", "password", "localhost");
return request.GetResponse();

当我尝试在我的机器上指定一个不同的本地 Windows 帐户时,通过将上面代码中的 "username""password" 更改为我的另一个帐户来验证用户对我的服务确定我的机器上存在,我收到以下错误:

System.Net.WebException: The remote server returned an error: (401) Unauthorized.

我的服务 Web.config 中有以下内容:

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5"/>
  </system.web>
  <system.serviceModel>
    <bindings>
      <webHttpBinding>
        <binding name="webHttpBindingWithTransportSecurity">
          <security mode="Transport">
            <transport clientCredentialType="Windows"/>
          </security>
        </binding>
      </webHttpBinding>
    </bindings>
    <services>
      <service name="FileRetrievalPoCV3.FileRetrievalService">
        <endpoint behaviorConfiguration="webBehavior" binding="webHttpBinding" bindingConfiguration="webHttpBindingWithTransportSecurity" contract="FileRetrievalPoCV3.IFileRetrieval" />
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior name="webBehavior">
          <webHttp />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <directoryBrowse enabled="false"/>
  </system.webServer>
</configuration>

这个问题的原因是什么?

我猜你的帐户有管理员权限,而另一个帐户没有。如果是这种情况,您需要明确授予对项目文件夹的权限(即使用 Windows Explorer)或将该用户分配给已经拥有权限的组。