当我的应用程序发出ajax调用时,我抛出一个错误并希望在我的客户端捕获它。哪种方法最好。
我的服务器端代码是:
try
{
...
}
catch (Exception ex)
{
throw new HttpException("This is my error", ex);
}
我的客户端代码是:
var url = $(this).attr('href');
var dialog = $('<div style="display:none"></div>').appendTo('body');
dialog.load(url, {},
function (responseText, status, XMLHttpRequest) {
if (status == "error") {
alert("Sorry but there was an error: " + XMLHttpRequest.status + " " + XMLHttpRequest.statusText);
return false;
}
....
在运行时,在调试时,我没有收到我的错误详细信息,如下面的屏幕截图所示:
我收到一般错误:
status: 500
statusText: Internal Server Error
如何获取我发送的详细信息:“这是我的错误”?
答案 0 :(得分:1)
最后我使用这个方法:
的Web.config:
<system.web>
<customErrors mode="On" defaultRedirect="~/error/Global">
<error statusCode="404" redirect="~/error/FileNotFound"/>
</customErrors>
</system.web>
ErrorController:
public class ErrorController : Controller
{
public ActionResult Global()
{
return View("Global", ViewData.Model);
}
public ActionResult FileNotFound()
{
return View("FileNotFound", ViewData.Model);
}
}
不要忘记创建2个特定视图。
最后,当我需要抛出特定的错误代码&amp;描述,我这样做:
public ActionResult MyAction()
{
try
{
...
}
catch
{
ControllerContext.RequestContext.HttpContext.Response.StatusCode = 500;
ControllerContext.RequestContext.HttpContext.Response.StatusDescription = "My error message here";
return null;
}
}
然后客户端我收到这样的错误信息。
答案 1 :(得分:0)
做这样的事情
服务器端:
try{
//to try
}catch(Exception ex)
{
return this.Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Error :"+ ex.Message);
}
然后请求会向javascript返回错误500,但会显示异常消息。
答案 2 :(得分:0)
您可以控制发送给客户端的详细错误消息。默认情况下,只能通过从服务器本身浏览站点来查看详细的错误消息。
要从服务器端以这种方式显示自定义错误,您需要在IIS configuration
中添加规则。
您可以阅读此主题,也许可以帮助您: HOW TO enable the detailed error messages for the website while browsed from for the client browsers?