"Workstation service has not been started" 由 DirectoryEntry 引起

"Workstation service has not been started" caused by DirectoryEntry

我在 IIS 7.5 上的 Windows 2008 R2 服务器上部署了一个可远程访问的网站。我正在使用 Windows 集成身份验证并读取页面上显示的用户显示名称 ("Bloggs, Joe")。

周五之前一切正常,突然出现以下错误:

The Workstation service has not been started.

[COMException (0x8007085a): The Workstation service has not been started. ] System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail) +387793

删除以下代码行将停止引发错误。

DirectoryEntry directory_entry = new DirectoryEntry("WinNT://" + Environment.UserDomainName + "/" + Environment.UserName);
ViewBag.Username = directory_entry.Properties["fullName"].Value.ToString();

有趣的是,这个错误只有在我远程访问网站时才会出现。从服务器访问它没有问题。

'Workstartion' 服务是 运行。我已经重新启动它并重新启动服务器没有效果。我已经在IIS中重启了网站,并回收了AppPool。

我在互联网上搜索过,找不到解决这个问题的方法。谁能提供见解?

我也遇到了这个问题 - 我正在实施(重用)一些执行类似操作的代码。事实证明,在我的案例中,错误消息有点像转移注意力——它抱怨无法连接。那是因为模拟和与之相关的双跳问题。一旦我将 DirectoryEntry 包装在一个 using 块中并返回到应用程序池帐户,一切正常:

var s = "WinNT://" + Environment.UserDomainName + "/" + Environment.UserName;
using (System.Security.Principal.WindowsIdentity.Impersonate(IntPtr.Zero))
using (var de = new System.DirectoryServices.DirectoryEntry(s))
{
  ViewBag.Username = de.Properties["fullName"].Value.ToString();
}