2009-02-24 46 views
0

我正在嘗試在Global.asax中的Application_Error處理程序中執行重定向。沒有什麼奇特的。從Medium Trust中的Global.asax重定向

private void Application_Error(object sender, EventArgs e) 
{ 
    // ...snip... 

    Server.Transfer(somePath, false); 

    // ...snip... 
} 

這項工作很好,完全信任,但我需要得到它在中等信任下工作。我在這裏工作的代碼需要在共享主機環境中正常運行(不幸的是,我無法控制這個需求)。

然而,當我配置的網站在我們的開發環境(XP專業版/ 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) 

一幾個其他注意事項:

  • 無論是從Global.asax還是從HttpModule發生這種情況。
  • 這也發生在Response.Redirect(somePath)。

感謝您提供的任何見解。我已經在此搜索了一個$$,沒有喜悅。

謝謝!

回答

0

今天我遇到了同樣的問題,但我想我找到了一個可以通過的解決方法。事實證明,指定Response.Status代碼可以解決這個問題。

private void Application_Error(object sender, EventArgs e) 
{ 
    // ...snip... 

    Response.StatusCode = 500; 
    Server.Transfer(somePath, false); 

    // ...snip... 
} 

不幸的是,如果您調試頁面,看起來SecurityPermissions錯誤仍然存​​在。我不確定這個問題到底有多大,因爲Server.Transfer會繼續沒有錯誤,並且對用戶沒有明顯的影響。

我想知道是否有人對此事有想法或意見。

0

我有和你一樣的問題。

我用:

Response.Redirect("~/ErrorRedirectPage.aspx",false); 

,它工作正常。

相關問題