我已经在Angular2中开发了前端应用程序,在ASP.net Web API中开发了后端.我使用Windows身份验证已启用,因为我想检测请求用户.这两个应用程序都托管在IIS服务器(Windows Server 2012)中.当我加载角度应用程序时,它加载登录提示,并在给出正确的用户凭据时数据加载正确发生 但我想知道一种在没有登录提示的情况下加载它们的方法,自动进行身份验证.
这是我在Web API中检测请求用户的方式.
string user = HttpContext.Current.Request.ServerVariables["LOGON_USER"]; //Get the current user...
userID = user.Split('\\')[1];
Run Code Online (Sandbox Code Playgroud)
这是一个示例TS脚本从Angular Services向Windows Authenticated Web API发送请求.
getPersonalInfo(): Observable<IPersonalInfo> {
return this._http.get(localStorage.getItem('WebApiURL') +"api/PersonalInfo/" , { withCredentials: true })
.map((response: Response) => <IPersonalInfo>response.json())
.catch(this.handleError);
}
Run Code Online (Sandbox Code Playgroud)
重新启动浏览器时,此登录每次都会询问.
我想通过此登录访问它们...
我已经在IIS服务器上部署了ASP Web API应用程序。仅因为我要检测访问API的Windows用户,所以它处于Windows身份验证启用模式。几天之内,它仍然可以正常工作,但是偶然地却无法正常工作。当请求API时,它要求登录提示几次(最少3次)。但是,提供凭据将导致服务不可用。原因是它会自动停止 IIS管理器中属于该站点的应用程序池,并在“应用程序”下的事件查看器中记录一个错误。
Faulting application name: w3wp.exe, version: 8.5.9600.16384, time stamp: 0x52157ba0
Faulting module name: clr.dll, version: 4.7.2117.0, time stamp: 0x59cf5105
Exception code: 0xc00000fd
Fault offset: 0x00451a8d
Faulting process id: 0xe10
Faulting application start time: 0x01d3a9f540d7b456
Faulting application path: C:\Windows\SysWOW64\inetsrv\w3wp.exe
Faulting module path: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Report Id: 83502af2-15e8-11e8-80ee-005056b72cd8
Faulting package full name:
Faulting package-relative application ID:
Run Code Online (Sandbox Code Playgroud)
在我的代码中,没有任何调试错误或配置错误。这将是什么问题,以及如何解决?