c# - 在 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();
}
解决方案
本着本网站的精神,并希望您将该代码纯粹用于调试,我将回答如何准确地获得您想要做的工作,但是伙计......该代码有很多错误!
在 .NET Core 中不再有上下文Response
或Server
对象。
相反,您必须执行以下操作:
await HttpResponseWritingExtensions.WriteAsync(this.Response, "<script>alert('" + HttpUtility.HtmlEncode(ex.ToString()) + "')</script>");
另外我认为更简单(并且稍微更正确的方法)是:
return Content("<script>alert('" + HttpUtility.HtmlEncode(ex.ToString()) + "');
我还没有测试过上述任何一个,但它应该可以工作。
但是,您确实应该有一个正确的错误页面(包括供内部使用),它将接受一个Exception
对象作为模型,然后使用 Razor 语法呈现您想要的任何内容。
推荐阅读
- javascript - 当旧令牌过期 Spotify 时,我可以自动获得新令牌吗?
- python - Python - 高级参数嵌套循环
- python - 为什么我发送 ping 数据包后没有收到应答?
- string - 如何删除包含未知字符的子字符串的所有出现?
- python - 如何将字符串从数据帧转换为 Numpy Datetime64
- java - 如何在 JMockit 测试用例中将 List 或任何不可模拟的对象注入 @Tested Spring bean
- php - PHP 应用程序中的 SSO 使用独立于 Web 服务器的 AD 凭据
- r - 在R中将格式从因子更改为日期
- python - 在 django 中访问数据框列时出现关键错误
- excel - 将电子邮件字符串(文本)转换为 Excel 表格