C# WCF REST返回401未授权Windows身份验证响应

C# WCF REST返回401未授权Windows身份验证响应,c#,asp.net,wcf,rest,authentication,C#,Asp.net,Wcf,Rest,Authentication,我有两份申请: 部署在Windows Server 2008 R2服务器上的Web应用程序。此应用程序用作WCF REST调用的端点 Windows窗体桌面C#应用程序,它将对上面的web应用程序进行REST调用。此应用程序也在同一台Windows Server 2008 R2服务器计算机上运行 如果我让Web应用程序使用Forms身份验证,一切都正常,但当我将其身份验证更改为Windows时,其余调用停止工作,它开始从Web应用程序获得401 not authorized响应 以下是我的web

我有两份申请:

  • 部署在Windows Server 2008 R2服务器上的Web应用程序。此应用程序用作WCF REST调用的端点

  • Windows窗体桌面C#应用程序,它将对上面的web应用程序进行REST调用。此应用程序也在同一台Windows Server 2008 R2服务器计算机上运行

  • 如果我让Web应用程序使用Forms身份验证,一切都正常,但当我将其身份验证更改为Windows时,其余调用停止工作,它开始从Web应用程序获得401 not authorized响应

    以下是我的web应用程序的一些详细信息:

    WCF的WebHttpBinding设置为“WebHttpSecurityMode.TransportCredentialOnly”,凭据为HttpClientCredentialType.Windows

     this.Security.Mode = WebHttpSecurityMode.TransportCredentialOnly;
     this.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;
    
    此网站的Web.config具有:

      <authentication mode="Windows" />
      <authorization>
        <deny users="?" />
      </authorization>
    
    
    
    此网站的IIS身份验证设置:

    Windows身份验证的提供程序设置为“协商”:

    为了进一步调查,我尝试调试应用程序,并注意到REST调用能够到达Global.asax的BeginRequest方法,但在执行该方法后,401响应返回给客户端。我甚至无法联系ServiceAuthorizationManager,因为在此之前已返回401响应

    我已经尝试了以下所有WCF REST调用:从Windows Forms C#client获取、放置和发布到此应用程序,所有这些调用都作为401未经服务器授权返回

    当我将web应用程序的身份验证模式从Windows更改为窗体时,同一个C#客户端从web应用程序工作中获得所需的响应。

    我想补充关于上述案件的更多信息。 即使使用web应用程序的Windows身份验证模式,如果我尝试直接通过web浏览器(在我的例子中是Chrome)通过REST调用请求服务器,我也可以得到响应。只有当我从C#Windows窗体客户端调用REST时,问题才会出现。我想它在这种情况下可以工作,我直接从浏览器进行REST调用,因为浏览器必须向服务器发送一些授权头来处理请求

    如果REST调用是从浏览器以外的客户端进行的,您能帮我解决这个问题吗


    如何让客户端的REST调用到达WCF REST端点,而不是从服务器获得401个响应?

    我终于找到了解决方案!!网络凭据应与请求一起发送。如下所示:request.Credentials=CredentialCache.DefaultNetworkCredentials;