Я запускаю веб-api в IIS на Windows Server 2012 R2.IIS не может записывать файл, если вызван с удаленного сервера, только с сервера
Приложение имеет контроллер, который по запросу запроса будет записывать файл в сетевой ресурс.
Если я получаю доступ к сайту из браузера на сервере, он отлично работает, однако, если я получаю доступ к сайту с моего собственного компьютера, я получаю исключение, заявляя, что у меня нет разрешения на запись в файл.
Пользователи аутентифицируются против сетей AD, и я использую одного и того же пользователя как на моем компьютере, так и на сервере.
Кажется, что IIS обрабатывает запрос как другой пользователь, если я вызываю его с сервера, но я не смог выяснить, как это изменить, чтобы я мог записать файл с другого хоста.
Код, который дает исключение использует StreamWriter
using (var writer = new StreamWriter(_filePathName))
{
writer.WriteLine(GetSetting("PROTECTED_KMDHeader"));
writer.Close();
}
Я включил олицетворение, однако результат был таким же. Я мог бы сгенерировать файл с сервера, но не с моего собственного компьютера. Но без разрешения олицетворения, в каких контекстах используется IIS при попытке доступа к файловой системе? потому что он должен отличаться от двух вариантов использования либо на сервере, либо для доступа к серверу с другого компьютера. – morras
IIS использует идентификатор, указанный в пуле приложений. По умолчанию установлено значение «DefaultAppPool». см. http://www.iis.net/learn/manage/configuring-security/application-pool-identities –