我们有一个具有以下站点结构的 IIS 7.5:
WebApp (ASP.NET Forms) = 网站 (http://WebApp)
WebAPI (MVC 4 Web API) = 文件夹转换为应用程序 (http://WebApp/webapi)
两者都在同一个 ApplicationPool 下运行。
两者都具有相同的身份验证设置:
- ASP.NET 模拟(经过身份验证的用户)
- Windows 身份验证(提供者:协商)
两个 web.configs 都定义:
<authentication mode="Windows" />
<identity impersonate="true" />
WebApp 使用 HttpClient 从 WebAPI 调用 WebService:
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;
WebAPI 使用 MS 企业库连接到数据库。
当我在本地运行时一切正常,当我在 IIS 7.5 服务器上部署它并开始远程调试时,我在 Web API 中的 HttpContext 当前用户是应用程序池标识,而不是登录到 Web 应用程序的用户。我当然希望它是登录到 WebApp 的用户,因为我想使用基于 AD 帐户(组)的安全性。
请任何人都可以提供一些建议以使其正常工作。提前致谢。