相关疑难解决方法(0)

ASP.NET Core Web API异常处理

在使用常规ASP.NET Web API多年后,我开始使用ASP.NET Core作为我的新REST API项目.我没有看到在ASP.NET Core Web API中处理异常的好方法.我试图实现异常处理过滤器/属性:

public class ErrorHandlingFilter : ExceptionFilterAttribute
{
    public override void OnException(ExceptionContext context)
    {
        HandleExceptionAsync(context);
        context.ExceptionHandled = true;
    }

    private static void HandleExceptionAsync(ExceptionContext context)
    {
        var exception = context.Exception;

        if (exception is MyNotFoundException)
            SetExceptionResult(context, exception, HttpStatusCode.NotFound);
        else if (exception is MyUnauthorizedException)
            SetExceptionResult(context, exception, HttpStatusCode.Unauthorized);
        else if (exception is MyException)
            SetExceptionResult(context, exception, HttpStatusCode.BadRequest);
        else
            SetExceptionResult(context, exception, HttpStatusCode.InternalServerError);
    }

    private static void SetExceptionResult(
        ExceptionContext context, 
        Exception exception, 
        HttpStatusCode code)
    {
        context.Result = new JsonResult(new ApiResponse(exception))
        { …
Run Code Online (Sandbox Code Playgroud)

c# exception asp.net-core

230
推荐指数
8
解决办法
16万
查看次数

从MVC6/WepApi控制器返回错误字符串

MVC6/WebApi中的模板WebApi控制器实现了一个返回Get方法集合的操作,如下所示:

[HttpGet]
public IEnumerable<MyEntity> Get()
{
    //my code to return entities
}
Run Code Online (Sandbox Code Playgroud)

假设我的代码返回结果会引发异常,我将如何向消费者返回错误消息?

据我所知,异常会导致HTTP 500.这很好,但我想给调用者一个消息,告诉他出了什么问题.由于模板操作的签名,我无法捕获异常并返回一些Http***或ObjectResult实例.

c# asp.net asp.net-web-api asp.net-core-mvc

6
推荐指数
1
解决办法
8932
查看次数

MVC 6 HttpResponseException

我试图以下列方式返回状态代码

throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Unauthorized) { ReasonPhrase = "invalid username/password" });
Run Code Online (Sandbox Code Playgroud)

现在这在MVC6中不受支持,因为使用IActionResult看起来对我来说真的很傻,而且不太直观.我找到了以下帖子.第一个导致链接断开,第二个适用于MVC应用程序.

我确实意识到我需要创建一个中间件来解决这个问题,但我不知道从哪里开始,因为这是非常有用的东西,我希望有一些我可以使用的开源解决方案或者可能是代码片段.

为了记录,我使用ASP.net 5 rc1更新1 MVC 6

c# asp.net asp.net-core-mvc asp.net-core

5
推荐指数
1
解决办法
1033
查看次数