Azure移动应用服务中的异常处理

时间:2018-06-23 04:17:40

标签: asp.net-mvc azure azure-mobile-services azure-web-app-service

我创建了一个移动应用程序服务并将其托管在Azure上。 有时特定的代码行会引发异常,而我没有处理这些异常。相反,我将它们记录在ExceptionFilterAttribute中。

我面临的问题是,这些异常被报告为Azure App Service未处理,我认为这是事实。我的问题是,如何改进下面的代码行,使其不会被视为未处理的异常?

public async Task<SingleResult<DTO.Responses.User>> GetUser(string id, OS os = OS.iOS, string openUrl = null)
{
    /* some code written here that sometimes throws exception */            
}

如果我添加try ... catch块,那么Mobile App同步框架将如何处理?

下面是异常过滤器的代码

public class UnhandledExceptionFilter : ExceptionFilterAttribute
{        
    public override void OnException(HttpActionExecutedContext context)
    {
        /* Log exception here*/
    }
}

1 个答案:

答案 0 :(得分:0)

根据我的知识,我们可以使用global error处理。

我们可以从此tutorial获取以下演示代码。

public class TraceSourceExceptionLogger : ExceptionLogger
{
    private readonly TraceSource _traceSource;

    public TraceSourceExceptionLogger(TraceSource traceSource)
    {
        _traceSource = traceSource;
    }

    public override void Log(ExceptionLoggerContext context)
    {
        _traceSource.TraceEvent(TraceEventType.Error, 1,
            "Unhandled exception processing {0} for {1}: {2}",
            context.Request.Method,
            context.Request.RequestUri,
            context.Exception);
    }
}

config.Services.Add(typeof(IExceptionLogger), 
    new TraceSourceExceptionLogger(new 
    TraceSource("MyTraceSource", SourceLevels.All)));

然后我们可以在ConfigureMobileApp方法中对其进行配置

Public static void ConfigureMobileApp(IAppBuilder app)
{
     HttpConfiguration config = new HttpConfiguration();
     config.Services.Add(typeof(IExceptionLogger),
    new TraceSourceExceptionLogger(new
    TraceSource("MyTraceSource", SourceLevels.All)));
            new MobileAppConfiguration()
                .UseDefaultConfiguration()
                .ApplyTo(config);
         ...
   app.UseWebApi(config);
}