Олицетворение в ASP.NET MVC
У меня есть веб-приложение MVC в интрасети, и я хочу иметь возможность создавать файлы на нашем FTP-сервере для отправки сторонним партнерам.
Код для олицетворения использует WindowsImpersonationContext.
System.Security.Principal.WindowsImpersonationContext impersonationContext;
impersonationContext = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();
StreamWriter sw = System.IO.File.CreateText("PathOnFTPServer");
sw.Write("data");
impersonationContext.Undo();
Вот'с чемПроисходит и причина моего вопроса:
Пред олицетворение
User.Identity.Name: [мои учетные данные Windows]
System.Security.Principal.WindowsIdentity.GetCurrent (). Имя: NT AUTHORITY \ NETWORK SERVICE
Post Олицетворение
User.Identity: [мои учетные данные Windows]
GetCurrent.Name: [мои учетные данные Windows]
Выдавать себя за отмену
User.Identity: [мои учетные данные Windows]
GetCurrent.Name: NT AUTHORITY \ NETWORK SERVICE
Итак, перед тем, как я олицетворять, текущий пользователь является системной учетной записью, но после олицетворения он использует мою учетную запись домена Windows, у которой есть разрешение на создание текстовых файлов на FTP-сервере. Код работает локально с использованием веб-сервера Visual Studio, но не тогда, когда я развертываю его на IIS на нашем тестовом сервере.
получаю ошибку "отказано в доступе". Какова будет причина ошибки, когда правильный пользователь выдает себя за другого?