簡體   English   中英

ASP.NET MVC應用程序中Windows身份驗證失敗的自定義錯誤頁面

[英]Custom error page for failed windows authentication in ASP.NET MVC application

根據如何使用Windows身份驗證中的自定義錯誤頁面 (盡管從未標記為答案),您必須添加IIS HTTP錯誤處理程序以“捕獲”失敗的Windows身份驗證並提供自定義錯誤頁面。

但是,永遠不會達到403,失敗的WinAuth會以401 Unauthorized結尾。 但是,如果我為401添加IIS HTTP錯誤處理程序,則NTLM身份驗證過程不再起作用(內部也使用401)。

Windows身份驗證失敗時,有人對自定義錯誤頁面(不是靜態的,我想執行MVC控制器操作!)有可行的解決方案嗎?

下面的代碼並不完全符合您的需要,但這就是我處理未處理的異常的方式。 您可以根據狀態代碼或異常類型將其更改為不同的路由。 (來自Global.asax)

 protected void Application_Error(object sender, EventArgs e)
            {
                var ex = Server.GetLastError().GetBaseException();
                Server.ClearError();

                var routeData = new RouteData();
                routeData.Values.Add("controller", "Error");
                routeData.Values.Add("action", "Global");
                int status = 0;

                if (ex.GetType() == typeof(HttpException))
                {
                    var httpException = (HttpException)ex;
                    var code = httpException.GetHttpCode();
                    status = code;
                }
                else
                {
                    status = 500;
                }

                //Create a new error based off the exception and the error status.
                NameSpace.Models.ErrorModel Error = new ErrorModel(status, ex);
                string innerException = "";
                if (ex.InnerException != null)
                {
                    innerException = "\n Inner Ex: " + ex.InnerException.StackTrace;
                }

                log.Error("Error Id: " + Error.ErrorId + " Error: " + ex.Message + ". Stack Trace: " + ex.StackTrace + innerException);
                routeData.Values.Add("error", Error);

                IController errorController = new NameSpace.Controllers.ErrorController();
                errorController.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));


            }

更新:抱歉,我沒有完全閱讀您的帖子。 如果要在應用程序中執行LDAP身份驗證,則可以利用以上代碼來捕獲並使用控制器處理錯誤。 不幸的是,我無法在上述問題上提供直接指導。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM