2012-03-05 10 views
0

.NET MVC3アプリケーション内にファイルを格納するために使用するフォルダを作成する必要がありますが、問題はすべてのASP.Netプラットフォームに共通すると思います。 System.UnauthorizedAccessExceptionが発生したため、フォルダを作成できますが、ファイルを書き込めません。 私はまた、Webアプリケーションを現在実行しているユーザに余分な権限を与えましたが、何も変わりません。コードのasp.netアプリケーションが書き込むことができるMVC3の作成フォルダ

if (!System.IO.Directory.Exists(fullPath)) 
{ 
    System.IO.Directory.CreateDirectory(fullPath);      
    var user = System.Security.Principal.WindowsIdentity.GetCurrent().User; 
    var userName = user.Translate(typeof(System.Security.Principal.NTAccount)); 
    var dirInfo = new System.IO.DirectoryInfo(fullPath); 
    var sec = dirInfo.GetAccessControl();      
    sec.AddAccessRule(new System.Security.AccessControl.FileSystemAccessRule(userName, 
        System.Security.AccessControl.FileSystemRights.Modify, 
        System.Security.AccessControl.AccessControlType.Allow) 
        ); 
    dirInfo.SetAccessControl(sec);      
    System.IO.Directory.CreateDirectory(fullPath);      
} 
string fullPathFileName = System.IO.Path.Combine(fullPath, fileName);     
System.IO.File.WriteAllBytes(fullPath, viaggio.Depliant.RawFile); 

あまりにも悪い、最後の行は常にSystem.UnauthorizedAccessExceptionを投げる: これはこれまでのところ、私のコードです。 私は自分のアプリでユーザーを偽装しているわけではありません。すべてが定義済みのユーザーのもとで実行されています。 フォルダを作成して、アプリケーションがその中にファイルを作成できるようにするにはどうすればよいですか?

編集:

また、私はApp_Dataに特別なフォルダ内のファイルを保存するようにしようと試みたが、私はまだSystem.UnauthorizedAccessExceptionエラーが発生しました。誰かがなぜそれが起こっているのか教えていただけますか?

答えて

1

:あなたは、私は、フォルダを作成するために、両方のfullPath変数を使用しています見ることができます正しく作成されたfullPathFileNameを使用する代わりに、ファイルを保存するために使用します。 私に責任がある!

0

使用App_Dataフォルダ、http://msdn.microsoft.com/en-us/library/06t2w7da%28v=vs.80%29.aspxからの引用:

ASP.NETアプリケーションで使用されるデータのセキュリティを向上させるために、App_Dataにという名前の新しいサブフォルダは、ASP.NETアプリケーション用に追加されました。 App_Dataフォルダに格納されたファイルは直接HTTP要求に応答して返されません。これにより、App_Dataフォルダは、.mdf(SQL Server Express Edition)、.mdb(Microsoft Access)、またはXMLファイル。 App_Dataフォルダを使用してアプリケーションデータを保存する場合、アプリケーションのIDにはApp_Dataフォルダに対する読み取りと書き込みのアクセス許可が与えられます。

私は問題は愚かな... は、私はちょうど適切なファイル名なしでファイルを保存しようとしているということであるとき、自分の質問に答えることを憎む
+0

私はApp_Dataフォルダを使用できません。アップロードする必要のあるファイルが大きく、大きなファイルになる可能性があります。私の要件は、アプリケーションのデプロイメントをデータフォルダから切り離すことです。 – themarcuz

+0

さらに、 App_Dataフォルダ(一時的に解決して開発に進む)が動作しません...同じエラーが発生しました – themarcuz

+1

IIS_IUSRSグループにはApp_Dataフォルダへの読み取り/書き込みアクセス権がありますか? –

関連する問題