您知道如何处理 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