Попытка записи файла в UNC из ASP.NET MVC - PullRequest
0 голосов
/ 16 сентября 2010

У меня есть некоторый код, работающий в приложении 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"}, и файл не удаляется.

?

1 Ответ

0 голосов
/ 16 сентября 2010

Идентификатор NUnit - это вы, а MVC, скорее всего, IUSR _... Я думаю, что это просто проблема безопасности.

...