Asp.net mvc 4 将WebApp用户(Windows auth)委派给MVC Web API失败

Asp.net mvc 4 将WebApp用户(Windows auth)委派给MVC Web API失败,asp.net-mvc-4,asp.net-web-api,iis-7.5,dotnet-httpclient,identity-delegation,Asp.net Mvc 4,Asp.net Web Api,Iis 7.5,Dotnet Httpclient,Identity Delegation,我们的IIS 7.5具有以下站点结构: WebApp(ASP.NET表单)=网站(http://WebApp) WebAPI(MVC4WebAPI)=已转换为应用程序的文件夹(http://WebApp/webapi) 两者都在同一应用程序池下运行 两者具有相同的身份验证设置: -ASP.NET模拟(经过身份验证的用户) -Windows身份验证(提供程序:协商) 两个web.config都定义了: <authentication mode="Windows" /> <id

我们的IIS 7.5具有以下站点结构:

WebApp(ASP.NET表单)=网站(http://WebApp)
WebAPI(MVC4WebAPI)=已转换为应用程序的文件夹(http://WebApp/webapi)

两者都在同一应用程序池下运行

两者具有相同的身份验证设置:
-ASP.NET模拟(经过身份验证的用户)
-Windows身份验证(提供程序:协商)

两个web.config都定义了:

<authentication mode="Windows" />  
<identity impersonate="true" /> 
WebAPI使用MS Enterprise Library连接到数据库

当我在本地运行此程序时,一切正常,当我在IIS 7.5服务器上部署此程序并开始远程调试时,Web API中的HttpContext当前用户是应用程序池标识,而不是登录到Web应用程序的用户。我当然希望它是登录到WebApp的用户,因为我想使用基于广告帐户(组)的安全性


任何人都可以,请,提供一些建议,让这个工作。提前感谢。

以下答案对我们有帮助():

有两种可能的解决方法。如果你有权访问你的 服务器aspnet_config.config,您应该设置以下设置 (在web.config中设置这些选项似乎没有效果):


HttpClient _httpClient = new HttpClient(new HttpClientHandler() { UseDefaultCredentials = true });
_httpClient.BaseAddress = new Uri("http://WebApp/webapi/");
_httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage _response = _httpClient.GetAsync("api/Entity/Get").Result;
<legacyImpersonationPolicy enabled="false"/>
<alwaysFlowImpersonationPolicy enabled="true"/>