У меня есть некоторый код, работающий в приложении asp.mvc внутри IIS 7. Код должен сохранять файл в общий ресурс UNC.Эта функция вызывается из некоторого кода контроллера: filePathname = "\ MYSRV \ sites \ docs \ 10080003 \ egg.txt '
public void EnsureDocument(string filePathName ,string content,WindowsIdentity identity )
{
System.Security.Principal.WindowsImpersonationContext impersonationContext = null;
try
{
impersonationContext = ((System.Security.Principal.WindowsIdentity)identity).Impersonate();
File.WriteAllText(filePathName, content);
}
finally
{
impersonationContext.Undo();
}
}
Вызов из контроллера asp.net mvc выглядит следующим образом ...
// pass running identity
documentSvc.EnsureDocument(filePathname, content, WindowsIdentity.GetCurrent());
//documentSvc.EnsureCaseDocument(filePathname,content,System.Security.Principal.WindowsIdentity)User.Identity);
Вызов из теста NUnit выглядит следующим образом ...
documentSvc.EnsureDocument(filePathname, content, WindowsIdentity.GetCurrent() );
Симптомы состоят в том, что код NUnit удаляет файл, но вызов из asp.net mvc делаетне отбрасывать файл.
** Тест 1: ПАРОЛИ, ФАЙЛ УБРАТЬ ** Код Nunit отправляет через идентификатор {AuthType = Keberos, ImpersonationLevel = none, Name = "DOMAIN \ Fred Blogs"}, и это удаляетсяфайл в unc.
** test 2: FAILS, НЕ УДАЛЯЕТ ФАЙЛ ** С impersonate = "true" в web.config и совершением вызова
documentSvc.EnsureDocument(filePathname, content, WindowsIdentity.GetCurrent());
Код mvc asp.net отправляет через {AuthType = Keberos, ImpersonationLevel = Delegation, Name = "DOMAIN \ Fred Blogs"} и файл не удаляется.
** тест 3: СБОЙ, НЕ УДАЛЯЕТ ФАЙЛ** Без impersonate = "true" в web.config и вызова и совершения звонка
documentSvc.EnsureCaseDocument(filePathname,content,System.Security.Principal.WindowsIdentity)User.Identity);
Код mvc asp.net отправляет через {AuthType = Negotiate, ImpersonationLevel = Delegation, Name = "DOMAIN \ Fred Blogs"}, и файл не удаляется.
?