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

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

Файловый сервер и веб-сервер находятся в одном домене. Я создал локального пользователя в нашем домене "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 ответа

Решение

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

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

У службы были разрешения на диск в H, но не на общий ресурс.

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

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

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

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

Другие вопросы по тегам