共有ホスティング プロバイダーを使用して中程度の信頼環境で 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 メソッドを使用した) 新しいディレクトリの作成が許可されないのは正常ですか? また、これに対する回避策はありますか?