我有一个Web应用程序(托pipe在IIS中),与Windows服务交谈。 Windows服务使用ASP.Net MVC Web API(自托pipe),因此可以使用JSON通过HTTP进行通信。 Web应用程序被configuration为进行模仿,其思想是向Web应用程序发出请求的用户应该是Web应用程序用来向服务发出请求的用户。 结构如下所示: (以红色突出显示的用户是在下面的示例中引用的用户。) Web应用程序使用HttpClient向Windows服务发出请求: var httpClient = new HttpClient(new HttpClientHandler() { UseDefaultCredentials = true }); httpClient.GetStringAsync("http://localhost/some/endpoint/"); 这会向Windows服务发出请求,但不会正确传递凭据(该服务将用户报告为IIS APPPOOL\ASP.NET 4.0 )。 这不是我想要发生的事情 。 如果我改变上面的代码来改为使用WebClient ,则用户的凭据将被正确传递: WebClient c = new WebClient { UseDefaultCredentials = true }; c.DownloadStringAsync(new Uri("http://localhost/some/endpoint/")); 使用上面的代码,服务将用户报告为向Web应用程序提出请求的用户。 我在做什么错误的HttpClient实现导致它不正确地传递凭据 (或者它是一个与HttpClient的错误)? 我想使用HttpClient的原因是它有一个与Tasks很好地配合的asynchronousAPI,而WebClient的asyc API需要用事件来处理。