2015-06-14 2 views
0

Я запускаю веб-api в IIS на Windows Server 2012 R2.IIS не может записывать файл, если вызван с удаленного сервера, только с сервера

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

Если я получаю доступ к сайту из браузера на сервере, он отлично работает, однако, если я получаю доступ к сайту с моего собственного компьютера, я получаю исключение, заявляя, что у меня нет разрешения на запись в файл.

Пользователи аутентифицируются против сетей AD, и я использую одного и того же пользователя как на моем компьютере, так и на сервере.

Кажется, что IIS обрабатывает запрос как другой пользователь, если я вызываю его с сервера, но я не смог выяснить, как это изменить, чтобы я мог записать файл с другого хоста.

Код, который дает исключение использует StreamWriter

using (var writer = new StreamWriter(_filePathName)) 
{ 
    writer.WriteLine(GetSetting("PROTECTED_KMDHeader")); 
    writer.Close(); 
} 

ответ

0

Вам необходимо включить имитацию. См. Эту ссылку https://technet.microsoft.com/en-au/library/cc730708(v=ws.10).aspx

+0

Я включил олицетворение, однако результат был таким же. Я мог бы сгенерировать файл с сервера, но не с моего собственного компьютера. Но без разрешения олицетворения, в каких контекстах используется IIS при попытке доступа к файловой системе? потому что он должен отличаться от двух вариантов использования либо на сервере, либо для доступа к серверу с другого компьютера. – morras

+0

IIS использует идентификатор, указанный в пуле приложений. По умолчанию установлено значение «DefaultAppPool». см. http://www.iis.net/learn/manage/configuring-security/application-pool-identities –