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 を呼び出したスレッドだけにドライブがマップされます。サーバー構成で変更されたものは何も知りません。プロセス内の他のスレッドがマップされたドライブを認識できないようにするオプションはありますか?