我对ASP.NET MVC 4中的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);
}
}
这里的消息是“发生了一件坏事。”绝不会向客户展示。谢谢你的澄清!
答案 0 :(得分:0)
根据评论,结果表明它在仅有客户端和服务器的ASP.NET MVC应用程序中毫无意义。两个Web API相互通信非常有用。但是,如果有人有兴趣你想通过&#39;在ASP.NET MVC的上下文中向客户端发送消息,您可以像这样使用HttpStatusCodeResult:
return new HttpStatusCodeResult(500,"Something bad happened")
你可以访问&#34;发生了一些不好的事情&#34;比如使用jQuery $ .ajax():
$.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
将包含&#34;发生了一些不好的事情&#34;。
希望这有助于某人。