"工作站服务尚未启动"由DirectoryEntry引起的

时间:2015-03-02 11:56:54

标签: c# .net asp.net-mvc-4 iis-7.5 windows-server-2008

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

这个工作正常,直到周五,突然间我收到以下错误:

  

尚未启动Workstation服务。

     

[COMException(0x8007085a):工作站服务尚未完成   开始。 ] 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。

我搜索了互联网的内容,无法找到解决此问题的方法。任何人都可以提供见解吗?

1 个答案:

答案 0 :(得分:2)

我也出现了这个问题 - 我正在实施(重用)一些执行类似操作的代码。事实证明,在我的情况下,错误信息是一个红色的鲱鱼 - 它抱怨它无法连接。那是因为模仿和与之相关的双跳问题。一旦我将DirectoryEntry包装在一个使用块中并回到应用程序池帐户,一切都运行正常:

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();
}