System.DirectoryServices.DirectoryServicesCOMException 仅与 Google Chrome 一起出现
System.DirectoryServices.DirectoryServicesCOMException occurs only with Google Chrome
远程 IIS 8.5 上带有 ApplicationPoolIdentity
的 MVC 应用程序。在 IE11 上工作正常,但在使用 Google Chrome 时,我得到一个带有 System.DirectoryServices.DirectoryServicesCOMException
的黄色屏幕
这是导致错误的代码
protected void Session_Start()
{
// Load current AD user
UserPrincipal user = UserPrincipal.Current;
Session.Add(name: "DisplayName", value: user.DisplayName);
Session.Add(name: "AccountName", value: user.SamAccountName);
}
同样在我的 Web.config 文件中,我有 <identity impersonate="true" />
和 <validation validateIntegratedModeConfiguration="false" />
最后一点是我发现使事情正常进行的唯一方法。但它只适用于IE。
为什么它在 IE11 中可以正常工作,但在 Chrome 中却不行?我做错了什么?
更新 #1
我可以在使用 HostingEnvironment.Impersonate()
包装对 Active Directory 的每次调用时使其工作。但是当我尝试使用 user.Save()
更改 AD 中的帐户时,它仍然给我一个黄屏
System.UnauthorizedAccessException: Access denied.
我没有对 Active Directory 域的完全访问权限,但我可以在我的 OU 中重置密码和 enable/disable 帐户。
使用这个 class 包装对 AD 的每次调用解决了我的问题。
远程 IIS 8.5 上带有 ApplicationPoolIdentity
的 MVC 应用程序。在 IE11 上工作正常,但在使用 Google Chrome 时,我得到一个带有 System.DirectoryServices.DirectoryServicesCOMException
这是导致错误的代码
protected void Session_Start()
{
// Load current AD user
UserPrincipal user = UserPrincipal.Current;
Session.Add(name: "DisplayName", value: user.DisplayName);
Session.Add(name: "AccountName", value: user.SamAccountName);
}
同样在我的 Web.config 文件中,我有 <identity impersonate="true" />
和 <validation validateIntegratedModeConfiguration="false" />
最后一点是我发现使事情正常进行的唯一方法。但它只适用于IE。
为什么它在 IE11 中可以正常工作,但在 Chrome 中却不行?我做错了什么?
更新 #1
我可以在使用 HostingEnvironment.Impersonate()
包装对 Active Directory 的每次调用时使其工作。但是当我尝试使用 user.Save()
System.UnauthorizedAccessException: Access denied.
我没有对 Active Directory 域的完全访问权限,但我可以在我的 OU 中重置密码和 enable/disable 帐户。
使用这个 class 包装对 AD 的每次调用解决了我的问题。