2013-02-07 4 views
2

У меня есть виртуальный каталог, настроенный на моем сервере IIS, указывающий на сетевое местоположение UNC - «\\ esdata \ userdata». Когда я устанавливаю это, я устанавливаю конкретного пользователя в конфигурации IIS, и я знаю, что у этого пользователя есть полные разрешения для этого каталога.Ошибка доступа от контроллера Web.API и DirectoryInfo

Теперь в моем контроллере Web.API я ищу конкретный подкаталог в этом виртуальном каталоге - скажем, johndoe (так \\ esdata \ userdata \ johndoe). Я могу создать свой объект DirectoryInfo в порядке, и путь, который он показывает, является правильным. Но если я вызываю GetDirectories() в этой информации о каталоге, я получаю исключение Access Denied - даже если есть определенные подкаталоги, и хотя пользователь IIS использует для доступа к этому каталогу полные права.

Итак, во-первых, это ограничение GetDirectories()? Я прочитал, что у него есть некоторые проблемы. Что я могу сделать, чтобы обойти это, или что я делаю неправильно?

ответ

2

Обнаружена проблема и исправлена. Суть в том, что мне пришлось настроить приложение ApplicationPool по умолчанию, чтобы использовать личность моего авторизованного пользователя, следуя документам here.

Я думаю, что мне стало неприятно то, что у меня была эта директория, отображаемая как виртуальный каталог в IIS, и отображала ее как того же пользователя. По-видимому, это не дает разрешения на доступ к этой информации так, как я думал. Вероятно, не очень хорошая идея изменить идентификатор пула приложений, но для сайта, основанного на интрасети, он доставит меня туда, куда я хочу пойти :)