我正在尝试在沙箱中运行一段代码。它失败了,问题来自使用缓存的代码部分。
它按预期工作的情况:
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
:
该程序集不允许部分受信任的调用者。
是否与此问题有关,或者缓存不打算在完全信任以外的场景中使用?