使用接受的答案this question我實現了自定義錯誤處理邏輯。它運行在運行Visual Studio 2012的本地PC上,允許我爲403,404和一般錯誤創建自定義視圖。問題是,當我將它部署到Azure時,IIS開始顯示錯誤消息,而不是我的MVC應用程序。我需要做一個配置更改以允許MVC控制錯誤消息處理嗎?IIS不允許MVC應用程序控制Azure上的錯誤消息
回答
儘管我不確定爲什麼我的PC(帶有IIS Express的Windows 8)的默認設置不同,但是當部署到Windows 2012 Server(IIS 8)時,您需要在Web.config系統中添加以下內容。 webServer部分:
<httpErrors errorMode="Detailed" />
問題是部署版本中的默認錯誤處理程序正在覆蓋您的Application_Error邏輯。檢查部署並設置爲customErrors mode =「On」的web.config變換並設置適當的重定向。然後你需要禁用全局過濾器HandleError。註釋掉RegisterGlobalFilters中的HandleErrorAttribute行。
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
//filters.Add(new HandleErrorAttribute());
}
我已經註釋掉該部分以使自定義錯誤處理工作。我也嘗試設置customErrors mode =「On」,並嘗試「關閉」,並且都產生了相同的結果。從Azure上的IIS返回的消息是:您正在查找的資源已被刪除,名稱已更改或暫時不可用。 – Josh
我認爲你有衝突的錯誤處理產生不同的結果。如果您在鏈接中描述的Application_Error中執行錯誤處理,則刪除customErrors元素。接下來確保您的控制器/操作與Application_Error中引用的那些匹配。最後,添加Server.ClearError();在Response.Clear()之前的Application_Error中; – viperguynaz
我會推薦一個不同的解決方案,然後你引用的那個。我對此有點生疏,但我記得設置起來相當簡單。沒有太多的代碼或配置。下面是我的配置是這樣的:
<!--This is the catch all error page. All these views are located in project directory Views/Shared -->
<customErrors mode="On" defaultRedirect="~/error/Error">
<!--Custom 404-->
<error statusCode="404" redirect="~/error/Notfound"></error>
<!--Custom 401-->
<error statusCode="401" redirect="~/error/NotAuthorized"></error>
</customErrors>
如果你想添加錯誤的自定義/通用日誌嘗試創建自己的HandleErrorAttribute。使用繼承並重寫OnException方法。類似這樣的:
public class CustomErrorHandler : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
//your logging code here
base.OnException(filterContext);
}
}
您還可以捕獲異常並讓它們爲您顯示自定義錯誤頁面。在我的應用我用它來定製自己的401這裏是我的Global.cs RegisterGlobalFilters樣子:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new CustomErrorHandler
{
ExceptionType = typeof(NotAuthorizedHttpException),
View = "NotAuthorized",
Order = 2
});
//Leave this line uncommented to let your customer error handler
filters.Add(new CustomErrorHandler());
}
我沒有註冊任何特殊的路由這個工作。最後一個警告。確保您的錯誤頁面包含在您的項目中,否則在您發佈到Azure時不會部署它們。
希望有幫助!
- 1. Azure Web應用程序Websockets CORS:訪問控制 - 允許來源
- 2. MVC控制器錯誤消息
- 3. 控制檯應用程序顯示錯誤消息框
- 4. 允許的錯誤消息冒泡
- 5. Django Angular cors錯誤:不允許訪問控制允許來源
- 6. Web應用程序 - 「源自訪問控制允許來源不允許」
- 7. GeoExt PDF打印:「錯誤消息:來源http:// localhost:55608是不允許的訪問控制允許來源」
- 8. IIS錯誤消息
- 9. Windows上的IIS控制Azure
- 10. Azure Web應用程序如何顯示錯誤消息
- 11. 允許在MVC Web應用程序
- 12. Xamarin Studio中的錯誤消息:不允許多次引用FSharp.Core.dll
- 13. Aspnet5控制檯應用程序不允許我非靜態主
- 14. MVC 5-應用程序顯示System.Web.WebPages.Html.HtmlHelper控件的錯誤消息像viewbag
- 15. Azure 405方法不允許錯誤...
- 16. Meteor應用程序中沒有訪問控制 - 允許 - 來源錯誤
- 17. Python中的ICMP pinger應用程序 - 錯誤:操作不允許?
- 18. 錯誤而在IIS上部署MVC應用程序7
- 19. 在IIS 7.5上部署MVC 4應用程序錯誤HTTP 500.19
- 20. 在IIS上部署MVC應用程序時遇到SQL錯誤
- 21. Gnome pannel應用程序錯誤消息
- 22. ASP.NET MVC 4應用程序給IIS 404/IController錯誤IIS 7.5/8
- 23. IIS上的MVC 5應用程序
- 24. IIS應用程序池標識不允許服務器啓動
- 25. 爲什麼iis主機應用程序不允許登錄?
- 26. 卡夫卡控制檯生產者不允許寫消息
- 27. 流星:從允許和拒絕規則定製錯誤消息
- 28. 405方法IIS網站上不允許的錯誤
- 29. 在IIS 7.5上託管MVC應用程序時顯示完整的錯誤消息
- 30. 訪問控制允許來源錯誤
我可以吻你! 但是,我會把我的虛擬帽子丟給你,先生,而不是:) –