サンドボックスでコードを実行しようとしています。失敗し、問題はキャッシュが使用されているコードの部分に起因します。
期待どおりに動作するケース:
public void Demo()
{
// Verify that the code is running in a sandbox: the next line is expected to
// fail, since the sandbox doesn't have enough I/O privileges to access H:\.
File.WriteAllText(@"H:\Hello.txt", "Hello");
}
つまり、「許可の要求 […] FileIOPermission […] に失敗しました」という例外がスローされます。
コードをデータベースへの呼び出しに置き換えると、やはり結果が期待されます。アプリは、十分な権限がないと文句を言っています。
要求された特権を追加すると、コードは例外なく実行されます。
失敗するケース:
前の方法を次のように置き換えると:
public void Demo()
{
Cache cache = HttpRuntime.Cache;
File.WriteAllText(@"H:\Hello.txt", "Hello");
}
それは動作を停止します: 不十分な I/O パーミッションについて不平を言う予想される例外の代わりに、スローされるものは次のSystem.Security.SecurityException
とおりです。
そのアセンブリは、部分的に信頼された呼び出し元を許可しません。
この問題に何か関係がありますか?それとも、キャッシュは完全信頼以外のシナリオで使用することを意図していませんか?