0

共有ホスティング プロバイダーを使用して中程度の信頼環境で ASP.NET Web アプリケーションを実行しています。次のコードにより、SecurityException がスローされます。

private void TestButton_Click(object sender, EventArgs e)
{
    string directory = Server.MapPath("~/MyFolder/") + "_TestDirectory";
    if (!Directory.Exists(directory))
        Directory.CreateDirectory(directory);
}

エラーの全文は次のとおりです。

System.Security.SecurityException: タイプ 'System.Security.Permissions.FileIOPermission、mscorlib、Version=2.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089' のアクセス許可の要求が失敗しました。
   System.Security.CodeAccessSecurityEngine.Check (オブジェクトの要求、StackCrawlMark & stackMark、ブール値 isPermSet) で
   System.Security.CodeAccessPermission.Demand() で
   System.IO.Directory.InternalCreateDirectory (文字列 fullPath、文字列パス、DirectorySecurity dirSecurity) で
   System.IO.Directory.CreateDirectory (文字列パス、DirectorySecurity directorySecurity) で
   ASP.testcreatedirectory_aspx.TestButton_Click (オブジェクトの送信者、EventArgs e) で
失敗したアクションは次のとおりです。
要求する
最初に失敗した権限の種類は次のとおりです。
System.Security.Permissions.FileIOPermission
失敗したアセンブリのゾーンは次のとおりです。
私のコンピューター

サブフォルダーが作成されているフォルダーには完全なアクセス許可があるため、問題はないと思います。これは、中程度の信頼環境での実行に関係しているようです。

信頼度が中程度の環境で (Directory.Create メソッドを使用した) 新しいディレクトリの作成が許可されないのは正常ですか? また、これに対する回避策はありますか?

4

1 に答える 1

0

アクセスしようとしているパスが、アプリケーションが存在する仮想ディレクトリの下にある限り、MediumTrustでアクセスできるはずです。アプリケーションIDにフォルダー作成権限がありますか?

http://msdn.microsoft.com/en-us/library/aa302425#c09618429_015


編集:上記のドキュメントを間違って読んだ可能性があります。このリンクも参照してください。読み取り、書き込み、追加、およびPathDiscoveryのアクセス許可しか持っていないようです:(

FileIOPermissionは制限されています。これは、アプリケーションの仮想ディレクトリ階層内のファイルにのみアクセスできることを意味します。アプリケーションには、アプリケーションの仮想ディレクトリ階層に対する読み取り、書き込み、追加、およびPathDiscoveryのアクセス許可が付与されます。

http://msdn.microsoft.com/en-us/library/ff648344.aspx

于 2011-06-17T15:31:50.660 に答える