从IIS托管的WCF Web服务访问网络共享

时间:2013-08-06 16:59:32

标签: wcf networking iis-7 windows-server-2008-r2

我有一个由Windows Server 2008 R2上运行的IIS7托管的C#WCF Web服务。我的Web服务需要访问网络共享,因此在Application_Start期间执行以下操作:

NETRESOURE nr = new NETRESOURCE();
nr.dwScope = RESOURCETYPE_DISK;
nr.lpRemoteName = string.Format(@"\\{0}\{1}", MyServer, MyShareName);
nr.lpLocalName = @"X:";
string UserName = MyWebSvcLoginName;
string Password = MyWebSvcPassword;
uint result = WNetAddConnection2(ref nr, Password, UserName, CONNECT_UPDATE_PROFILE);

这已经好了3个月。 Web服务进程中的所有线程都可以访问映射的驱动器。现在,突然间,只有调用WNetAddConnection2的线程才会映射驱动器。我不知道服务器配置中发生了任何变化。是否有任何选项可以阻止进程中的其他线程看到映射的驱动器?

1 个答案:

答案 0 :(得分:0)

你需要寻找有效和无效的区别。要检查的是:

  • 是否在具有不同身份的其他应用程序池中运行。不起作用的身份是否失去了一些权利?
  • 工作的是否使用不同的用户名和密码来访问共享。用户的密码是否已失效?
  • 是否都映射到相同的驱动器号?驱动器是否用于另一个共享?