繁体   English   中英

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

[英]What is the point of HttpException in ASP.NET MVC

我对ASP.NET MVC 4中的HttpException Exception类有点困惑。我知道它可以引发自定义错误代码,但是还有另一个接受消息的构造函数:

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()这样访问“发生了严重的事情”:

                    $.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将包含“发生了什么不好的事情”。

希望这对某人有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM