【问题标题】:MVC Error Handling with WCF Service使用 WCF 服务处理 MVC 错误
【发布时间】:2017-02-28 09:58:48
【问题描述】:

我看到了与我的问题类似的帖子Error Handling with WCF Service and Client Application,但我需要更多帮助。

我有一个带有 WCF 服务的 MVC 项目。我知道 WCF 需要抛出一个 FaultException。但我的问题是显示由 WCF 中的错误创建的错误消息的最佳方式是什么。我只想将所有错误(可能所有 FaultException)重定向到一个错误页面(将是通用的),但消息会有所不同。

我还想使用 [HandleError] 属性,这样我就不必为调用 WCF 服务的所有方法实现捕获 FaultException。

【问题讨论】:

  • 您可以创建一个拦截器,如果捕获到错误异常,则重定向到特定页面

标签: asp.net-mvc wcf model-view-controller error-handling


【解决方案1】:

您知道如何处理 WCF 异常,但我认为最好观察这些:

1-这不是向用户准确显示异常消息的好主意,最好显示易于理解的消息,例如“操作失败,后端服务可能有问题,重试或通知管理员”

2- 最终用户重定向到公共错误页面很无聊。

3- 这更好地向用户显示公共提示,告诉用户操作在用户执行操作时失败,而不是将其重定向到另一个页面。

4- 最后如果你想做你想做的事,试试这些:

try
        {
            //Call your wcf
        }
        catch(Exception exp)
        {
            //Logging.Log(LoggingMode.Error, "You message , EXP:{0}...", exp.ToString());
            Response.Redirect("~/ErrorPages/Oops.aspx?Error=WCfOperationFailed", false); 
        }

在您的错误页面 page_load 中:

            switch (Request.QueryString["Error"].ToString())
            {
                case "WCfOperationFailed": 
                    litError.Text = string.Format("<h2>Error!.</h2><br/><p>{0}.</p>",GetError());
                    break;
               default:
                break;
}

 public string GetError()
    { 
        Exception lastError = Server.GetLastError();
        return lastError.ToString();
}

或者您可以将错误消息作为QueryString 重定向到错误页面并在Page_load 中显示给用户,例如:

//in catch block
Response.Redirect("~/ErrorPages/Oops.aspx?Error="+exp.Message, false);

在错误页面Page_load

txtError.Text = Request.QueryString["Error"].ToString();

但是,您可以通过将代码添加到 Global.asax 文件中的 Application_Error 处理程序来捕获应用程序中任何地方发生的错误:

 void Application_Error(object sender, EventArgs e)
{
    Exception exc = Server.GetLastError();

    if (exc is HttpUnhandledException)
    {
        // Pass the error on to the error page.
        Server.Transfer("ErrorPage.aspx?Error="+exc.Message, true);
    }
}

此链接可能会有所帮助,有一些示例 Error Handling

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 2015-01-14
    • 1970-01-01
    • 2013-07-18
    • 2012-01-29
    相关资源
    最近更新 更多