【问题标题】:Exception Handling in Azure Mobile App ServiceAzure 移动应用服务中的异常处理
【发布时间】:2018-06-25 14:31:42
【问题描述】:

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

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

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 块,移动应用同步框架将如何处理?

下面是异常过滤的代码

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

【问题讨论】:

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


    【解决方案1】:

    据我所知,我们可以使用global errorhanding。

    我们可以从这个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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-11
      • 1970-01-01
      相关资源
      最近更新 更多