gpt4 book ai didi

asp.net - 我可以通过通用的 try/catch 优雅地运行 Controller 中的每个 ContentResult 吗?

转载 作者:行者123 更新时间:2023-12-02 16:48:18 26 4
gpt4 key购买 nike

我假设有一种优雅的方法可以做到这一点,但我不知道它是什么。在我正在开发的应用程序中,我有很多返回 xml 的 ContentResult。返回 xml 的每个操作都会运行完全相同的 try/catch block ,并且我一遍又一遍地重复自己 - 这是我正在谈论的内容的示例:

public ContentResult SomeAction()
{
try
{
//some stuff here
}
catch(Exception ex)
{
HandleErrorMethod(ex);
}
return this.Content(someObject.ToXmlString(), contentReturnType);
}

这种情况在 Controller 中发生 3-4 次,所以我想有一种方法可以用属性来绘制它,或者在 global.asax 中运行某种方法或类似的方法来防止一遍又一遍地重复自己- 更不用说将来的代码更改了。我真的不知道该去哪里寻找(我想这就是我问的原因);谢谢!

最佳答案

我也遇到过这个问题。我覆盖 Controller.OnException方法以我自己的方式处理它,从而包括日志记录以及将用户重定向到错误页面或根据请求显示 JavaScrpt 错误。

您可以使用 HandleError 属性来使其适用于需要它的操作。

protected override void OnException(ExceptionContext filterContext)
{

if (filterContext == null)
return;

var ex = filterContext.Exception; //Your exception
//Now put the rest of your code that is currently in your handle error method.
}

[HandleError]
public ContentResult SomeAction()
{
//some stuff here
return this.Content(someObject.ToXmlString(), contentReturnType);
}

关于asp.net - 我可以通过通用的 try/catch 优雅地运行 Controller 中的每个 ContentResult 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5147138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com