在ASP.NET MVC中的HttpException有什么意义
问题描述:
我对ASP.NET MVC 4中的HttpException异常类有点困惑。我知道它可以让你抛出自定义的错误代码,但也有另一个构造函数可以接受消息:在ASP.NET MVC中的HttpException有什么意义
据我了解,只允许HTTP发送回状态码和相关的如“内部服务器错误”状态码一个小消息。如果是这样的话,在ASP.NET MVC应用程序的上下文中使用这个类甚至是什么?现在我有控制器抛出HttpExceptions与特定的状态代码告诉客户发生了什么。这是正确的方法吗?例如:
/// <summary>
/// GET: Returns the data required for the modal to edit the environments.
/// </summary>
/// <returns></returns>
[HttpGet]
public ActionResult EditEnvironments()
{
try
{
List<Setting> settings = _service.GetAllSettings().ToList();
return PartialView("_EditEnvironments", settings);
}
catch (Exception ex)
{
Log.Error(ex.Message, ex);
throw new HttpException(500, "Something bad happened.", ex);
}
}
这里的消息 “坏事发生了。”永远不会显示给客户。感谢您的澄清!
答
好的基于评论,事实证明,它是没有意义的ASP.NET MVC应用程序只有一个客户端和服务器。这对两个Web API可以相互交流很有用。但是,如果有人有兴趣要“通行证”的消息给客户端在ASP.NET MVC的背景下,你可以使用HttpStatusCodeResult这样的:
return new HttpStatusCodeResult(500,"Something bad happened")
,您可以访问“一些糟糕的事情发生”使用,也就是说,jQuery的$。阿贾克斯()是这样的:
$.ajax: {
url: "@Url.Action("RequestsAdminAjax", "Admin")",
type: "POST",
data: function(data) { return JSON.stringify(data); },
contentType: "application/json; charset=utf-8",
error: function (xhr, textStatus,errorThrown) {
debugger;
toggleAlert('<strong>Error: </strong>Unable to load data.', 'alert alert-danger');
}
},
和errorThrown
将包含 “一些糟糕的事情发生”。
希望这可以帮助别人。
Erm,你从哪里得到的想法HTTP只发回状态码?那么如何陈述“确定”然后工作? – walther
这样做没有意义,MVC应用程序处理HTTP状态代码。当你进行Web服务调用或者使用'HttpWebRequest'或'HttpWebResponse'出于任何原因时,通常使用'HttpException' – Fourat
我知道有一个状态码和一个像'OK'这样的小消息,就像我在第二段中写的那样。和福拉 - 谢谢。 – coolboyjules