如何在Azure WebApps .net核心上查看appstart上的依赖性问题

时间:2017-11-10 14:12:54

标签: asp.net-mvc azure asp.net-web-api asp.net-core

当我们部署缺少依赖项的应用时,我们会收到500个错误,但不是很有用。我们无法通过appinsight捕获错误,因为应用程序无法启动。  我们怎样才能有更好的错误?

将构建任务添加为索引源&发布符号会有所帮助吗?

关于应用   - .net核心   - 视图未预先编译。

使用nlog启用Azure详细错误和appinsights。

通用错误就像

  

http://www.w3.org/1999/xhtml"> IIS详细   错误 - 500.0 - 内部服务器错误   

2 个答案:

答案 0 :(得分:1)

我建议安装Application Insights。然后,您可以在客户端和服务器端获得有关异常和应用程序性能的非常详细的消息。集成它非常简单,可以通过Visual Studio完成。

答案 1 :(得分:0)

解决问题的两个步骤

第1步。 var host = new WebHostBuilder()。CaptureStartupErrors(true)

第2步。创建日志文件夹

第3步。添加一个类来获得反射错误。

第4步。转到kudu并在web.config上启用日志记录

第5步。找到错误并查看相关的依赖项。

第6步。写一个nuget为.core喜欢nugets但讨厌直接的依赖。

 public class ReflectionTypeLoadExceptionLoggingMiddleware
    {
        private readonly RequestDelegate _next;
        private readonly Microsoft.Extensions.Logging.ILogger _logger;
        public ReflectionTypeLoadExceptionLoggingMiddleware(RequestDelegate next, ILoggerFactory loggerFactory)
        {
            _next = next;
            _logger = loggerFactory.CreateLogger<ReflectionTypeLoadExceptionLoggingMiddleware>();
        }
        public async Task Invoke(HttpContext httpContext)
        {
            try
            {
                await _next(httpContext);
            }
            catch (Exception ex)
            {
                var reflectionTypeLoadException = ex as ReflectionTypeLoadException;
                if (reflectionTypeLoadException != null && reflectionTypeLoadException.LoaderExceptions != null)
                {
                    _logger.LogError("ReflectionTypeLoadException {0}", ex);
                    _logger.LogError("Loader exceptions messages: ");
                    foreach (var exception in reflectionTypeLoadException.LoaderExceptions)
                    {
                        _logger.LogError("ex {0}", exception);
                    }
                }
                throw;
            }
        }
    }