首页 > 解决方案 > 在 try catch 块中向用户显示 net core web 应用程序中的错误

问题描述

我有一个控制器,它通过 API 将新游戏发布到服务器。

这部分有效,但由于某种原因我的电子邮件失败了,我想向用户显示错误。

所以我尝试在我的 catch 语句中添加一个 Response.Write,如下所示。

但它找不到“Response.Write”或“Server”的定义。

我将如何添加这些?

谢谢!

   [HttpPost]
    public async Task<ActionResult> ProcessGameForm([FromBody] MakeGame game)
    {         

        ' xx post form code 

       ' now send email alert
       try
        {
            SendMyEmail(game.Title);

        }
        catch (Exception ex)
        {
            Response.Write("<script>alert('" + Server.HtmlEncode(ex.ToString()) + "')</script>");
        }

        return Ok();
    }

标签: c#asp.net-coreasp.net-core-webapiasp.net-core-3.1

解决方案


本着本网站的精神,并希望您将该代码纯粹用于调试,我将回答如何准确地获得您想要做的工作,但是伙计......该代码有很多错误!

在 .NET Core 中不再有上下文ResponseServer对象。

相反,您必须执行以下操作:

await HttpResponseWritingExtensions.WriteAsync(this.Response, "<script>alert('" + HttpUtility.HtmlEncode(ex.ToString()) + "')</script>");

另外我认为更简单(并且稍微更正确的方法)是:

return Content("<script>alert('" + HttpUtility.HtmlEncode(ex.ToString()) + "');

我还没有测试过上述任何一个,但它应该可以工作。

但是,您确实应该有一个正确的错误页面(包括供内部使用),它将接受一个Exception对象作为模型,然后使用 Razor 语法呈现您想要的任何内容。


推荐阅读