2016-02-01 27 views
1

在我的ASP.NET MVC Web應用程序中,我嘗試使用404和403響應發送自定義錯誤頁面。我能夠使用Global.asax.cs中的以下代碼在本地IIS上執行此操作。不需要web.config支持。自定義403頁在一個環境中工作,而不是在另一個環境中

protected void Application_EndRequest() 
{ 
    if (Context.Response.StatusCode == 404) 
    { 
     Response.Clear(); 

     var rd = new RouteData(); 
     rd.DataTokens["area"] = ""; 
     rd.Values["controller"] = "Error"; 
     rd.Values["action"] = "NotFound"; 

     IController c = new ErrorController(); 
     c.Execute(new RequestContext(new HttpContextWrapper(Context), rd)); 
    } 
    else if (Context.Response.StatusCode == 403) 
    { 
     Response.Clear(); 
     var rd = new RouteData(); 
     rd.DataTokens["area"] = ""; 
     rd.Values["controller"] = "Error"; 
     rd.Values["action"] = "Forbidden"; 

     IController c = new ErrorController(); 
     c.Execute(new RequestContext(new HttpContextWrapper(Context), rd)); 
    } 
} 

但是,當我將它部署到我的測試環境時,這個相同的代碼不起作用。在我的測試環境中,我仍然收到403響應,但是我沒有看到自定義的禁止視圖。我只是從IIS獲取默認的403視圖。更奇怪的是,404視圖在這兩種環境下都能正常工作。我花了一整天的時間比較web.config文件和其他IIS設置,試圖確定我的測試環境有什麼不同,但沒有運氣。任何幫助將不勝感激。

回答

0

你在測試服務器上的路徑上實際上是否被禁止(用戶權限,沒有讀取)?

測試服務器是否與您的開發機器運行相同的IIS?可能是一些服務器端配置改變。

+0

是的,我無法訪問正確的資源。該響應的狀態代碼403就像它應該但瀏覽器中呈現的標記不是我的自定義視圖,就像當我訪問我的licall IIS時。我的本地IIS是v10,而測試環境是v7。 –

相關問題