Веб-сайт .Net создает каталог для удаленного доступа к серверу запрещен - PullRequest
0 голосов
/ 23 апреля 2010

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

Файловый сервер и веб-сервер находятся в одном домене.Я создал локального пользователя в нашем домене "DOMAIN \ aspnet".Локальный пользователь находится на обоих серверах.

Я запускаю пул приложений .Net под пользователем домена.Я также пытался использовать Windows от имени другого пользователя в файле web.config для запуска под пользователем домена.

Я проверил, что пользователь домена имеет полный контроль над удаленным каталогом.В попытке отладить это, я также дал полный контроль над «всеми» удаленному каталогу.

Чтобы отладить это, я также добавил пользователя домена в группу администраторов.

У меня есть простая тестовая страница .net на веб-сервере, чтобы проверить это.Через тестовую страницу я могу прочитать каталог на файловом сервере и получить список всего, что находится на нем.

Я не могу загружать файлы или создавать каталоги на файловом сервере.

Вот код, который работает:

var path = @"\\fileserver\images\";
 var di = new DirectoryInfo(path);
            foreach (var d in di.GetDirectories())
            {
                Response.Write(d.Name);
            }

Вот код, который не работает:

 path = Path.Combine(path, "NewDirectory");
 Directory.CreateDirectory(path);

Вот ошибка, которую я получаю: Доступ к пути '\ fileserver \ images\ NewDirectory 'запрещен.

Я застрял в этом.Есть идеи?

Ответы [ 2 ]

0 голосов
/ 25 апреля 2010

Проблема в итоге оказалась проблемой пути.

\ fileserver \ images \ был сопоставлен с h: \ files \ http \ images

Служба имела права доступа к диску в H, но не к общему ресурсу.

0 голосов
/ 25 апреля 2010

Проверьте уровень доверия сервера / сайта.Если у вас меньше полного доверия, вам может потребоваться изменить настройку FileIOPermission:

<IPermission 
   class="FileIOPermission" 
   version="1" 
   Read="$AppDir$" 
   Write="$AppDir$" 
   Append="$AppDir$" 
   PathDiscovery="$AppDir$"/>

Значение макроса $AppDir$ распространяется на папку, в которой находится ваш веб-сайт. Вы можете добавить дополнительныепути, разделяя их точкой с запятой.

Файл, который нужно отредактировать, будет указан настройкой <trust level=.../> в файле master web.config в C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG, предполагая, что вы работаете.NET 2.0.

...