ASP.NET MVC中的HttpException有什么意义

时间:2016-11-15 13:58:45

标签: c# .net ajax asp.net-mvc http

我对ASP.NET MVC 4中的HttpException异常类有点困惑。我理解它可以让你抛出自定义错误代码,但是还有另一个接受消息的构造函数:

HttpException Constructor

据我所知,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);
        }
    }

这里的消息是“发生了一件坏事。”绝不会向客户展示。谢谢你的澄清!

1 个答案:

答案 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;。

希望这有助于某人。