0


0

ASP.NET MVCからUNCにファイルを書き込もうとしています

IIS 7内のasp.mvcアプリでいくつかのコードを実行しています。 コードは、ファイルを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コードは、ID \ {AuthType = Keberos、ImpersonationLevel = none、Name = "DOMAIN \ Fred Blogs"}を介して送信し、uncにファイルをドロップします。

テスト2:失敗、ファイルを削除しない web.configでimpersonate = "true"を使用し、呼び出しを行う

documentSvc.EnsureDocument(filePathname, content, WindowsIdentity.GetCurrent());

asp.net mvcコードは\ {AuthType = Keberos、ImpersonationLevel = Delegation、Name = "DOMAIN \ Fred Blogs"}を介して送信され、ファイルはドロップされません。

テスト3:失敗、ファイルを削除しない web.configでimpersonate = "true"を使用せずに呼び出しと呼び出しを行う

documentSvc.EnsureCaseDocument(filePathname,content,System.Security.Principal.WindowsIdentity)User.Identity);

asp.net mvcコードは\ {AuthType = Negotiate、ImpersonationLevel = Delegation、Name = "DOMAIN \ Fred Blogs"}を介して送信され、ファイルはドロップされません。

?

1 Answer


0


NUnitの実行IDはあなたですが、MVCの実行IDはIASURA _…​ これは単なるセキュリティ上の問題だと思います。