在 try catch 块中向用户显示 net core web 应用程序中的错误

show user an error in net core web app in the try catch block

我有一个控制器可以通过 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();
    }

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

在 .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 语法呈现您想要的对象。