Проблема с разрешением при развертывании веб-службы в качестве виртуального каталога. Работает в VS IDE - PullRequest
1 голос
/ 27 апреля 2010

У меня есть веб-служба ASP.NET, которая создает текстовый файл по пути, который передается в качестве параметра методу.

 private void CreateFile(string path)
 {
        string strFileName = path;
        StreamWriter sw = new StreamWriter(strFileName, true);
        sw.WriteLine("");
        sw.Write("Created at " + DateTime.Now.ToString());
        sw.Close();
 }

Теперь я передаю папку в сети в качестве параметра и вызываю метод

  CreateFile(@"\\192.168.0.40\\labels\\test.txt");

При запуске кода из Visual Studio IDE файл создается по пути. Но когда я опубликовал это и развернул в качестве виртуального каталога, он выдал мне ошибку вроде

   "System.UnauthorizedAccessException: Access to the path '\\192.168.0.40\labels\test.txt' is denied.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
   at System.IO.StreamWriter.CreateFile(String path, Boolean append)
   at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize)
   at System.IO.StreamWriter..ctor(String path, Boolean append)

У меня <identity impersonate="true"/> в моем web.config. Моя машина работает в XP, а другая в Windows Server 2003. Для этой папки я установил разрешение WRITE «Любой».

1 Ответ

1 голос
/ 27 апреля 2010

Ваше веб-приложение работает под локальной учетной записью пользователя aspnet, которая не имеет доступа к ресурсу в сети. Если у вас есть пулы приложений в вашей версии IIS, вы должны сделать пользователя пула приложений пользователем домена, который имеет доступ к сетевому ресурсу. Если у вас нет пулов приложений, вы меняете пользователя для Интернета в элементе processModel файла web.config.

...