我正在尝试在Global.asax中的Application_Error处理程序中进行重定向。没什么好看的。
private void Application_Error(object sender, EventArgs e)
{
// ...snip...
Server.Transfer(somePath, false);
// ...snip...
}
这在完全信任下很有效,但我需要让它在中等信任下工作。我在这里工作的代码需要在共享托管环境中正常运行(不幸的是,我无法控制这个要求)。
但是,当我在开发环境(XP Pro / IIS 5.1)中按如下方式配置站点以进行测试时:
<system.web>
<trust level="Medium"/>
</system.web>
失败并出现以下错误:
Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.** at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) at System.Security.CodeAccessPermission.Demand() at System.Web.HttpWorkerRequest.SendResponseFromMemory(IntPtr data, Int32 length) at System.Web.HttpWorkerRequest.SendResponseFromMemory(IntPtr data, Int32 length, Boolean isBufferFromUnmanagedPool) at System.Web.HttpResponseUnmanagedBufferElement. System.Web.IHttpResponseElement.Send(HttpWorkerRequest wr) at System.Web.HttpWriter.Send(HttpWorkerRequest wr) at System.Web.HttpResponse.Flush(Boolean finalFlush) at System.Web.HttpResponse.Flush() at System.Web.HttpResponse.End() at System.Web.HttpServerUtility.Transfer(String path, Boolean preserveForm)
其他一些值得注意的事项:
欣赏您可以提供的任何见解。我用谷歌搜索了我的一个$$,没有快乐。
谢谢!
答案 0 :(得分:0)
我今天遇到了同样的问题,但我想我找到了一个可以解决的问题。事实证明,指定Response.Status代码可以解决此问题。
private void Application_Error(object sender, EventArgs e)
{
// ...snip...
Response.StatusCode = 500;
Server.Transfer(somePath, false);
// ...snip...
}
不幸的是,如果您调试页面,似乎仍然会发生SecurityPermissions错误。我不确定这是多少问题,因为Server.Transfer会继续而没有错误,并且对用户没有明显的影响。
我很想知道是否有人对此事有任何想法或意见。
答案 1 :(得分:0)
我遇到了和你一样的问题。
我用过:
Response.Redirect("~/ErrorRedirectPage.aspx",false);
它运作正常。