Веб-сайт.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.