ASP.NET Azure Web Apps 的核心,添加 Azure Web App Diagnostics 在启动时抛出 FileNotFoundException
ASP.NET Core on Azure Web Apps, adding Azure Web App Diagnostics throws FileNotFoundException on startup
我们将 ASP.NET Core 3.0 Web 应用程序部署到 Azure Web Apps。为了获取日志消息,我们要使用 Azure Web Apps diagnostics。我们在 program.cs 中添加日志提供程序:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(logging => logging.AddAzureWebAppDiagnostics())
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
但是,在应用程序启动时,FileNotFoundException 被记录到标准输出(有关详细信息和堆栈跟踪,请参见下文)并且应用程序无法启动(状态代码 500.30)。
我们已经采取了以下步骤来查找原因,但到目前为止,我们没有成功:
- 我们使用了 Kudu 并断言该目录存在。目录中的 settings.json 文件模拟了我们在日志配置中设置的设置。
- 此外,我们在 program.cs 中添加了对 Directory.Exists 的调用,以验证该目录是否存在。这也返回了 true。
- 我们已经在相同的应用服务计划中使用相同的设置重新创建了同名的 Azure Web 应用;应用程序无法启动。
- 在新创建的 ASP.NET Core 3.0 项目中,我们成功地设置了日志记录,即使在我们反映了更大解决方案的一些细节之后也是如此;我们验证了以下特征不会阻止测试应用程序成功登录:
- 运行 from package 一开始没有设置(我们直接从 Visual Studio 部署了测试应用程序),但是我们创建了一个部署的构建过程一个包 运行 来自 package 集合。所以一般的构建和发布过程是相同的。
- 我们从较大的项目中复制了 web.config(已调整以将日志消息保存到标准输出)
- 我们在项目之间复制了 program.cs 的内容,因此创建虚拟主机的代码是相同的。
有谁知道这种行为的原因或我们可以用来获取更多详细信息的其他一些步骤吗?
异常详情
Unhandled exception. System.IO.FileNotFoundException: Error reading
the D:\home\site\diagnostics\ directory.
at System.IO.FileSystemWatcher.StartRaisingEvents()
at System.IO.FileSystemWatcher.StartRaisingEventsIfNotDisposed()
at System.IO.FileSystemWatcher.set_EnableRaisingEvents(Boolean
value)
at
Microsoft.Extensions.FileProviders.Physical.PhysicalFilesWatcher.TryEnableFileSystemWatcher()
at
Microsoft.Extensions.FileProviders.Physical.PhysicalFilesWatcher.CreateFileChangeToken(String
filter)
at
Microsoft.Extensions.FileProviders.PhysicalFileProvider.Watch(String
filter)
at
Microsoft.Extensions.Configuration.FileConfigurationProvider.<.ctor>b__1_0()
at
Microsoft.Extensions.Primitives.ChangeToken.ChangeTokenRegistration1..ctor(Func
1
changeTokenProducer, Action`1 changeTokenConsumer, TState state)
at Microsoft.Extensions.Primitives.ChangeToken.OnChange(Func`1
changeTokenProducer, Action changeTokenConsumer)
at
Microsoft.Extensions.Configuration.FileConfigurationProvider..ctor(FileConfigurationSource
source)
at
Microsoft.Extensions.Configuration.Json.JsonConfigurationSource.Build(IConfigurationBuilder
builder)
at Microsoft.Extensions.Configuration.ConfigurationBuilder.Build()
at
Microsoft.Extensions.Logging.AzureAppServices.SiteConfigurationProvider.GetAzureLoggingConfiguration(IWebAppContext
context)
at
Microsoft.Extensions.Logging.AzureAppServicesLoggerFactoryExtensions.AddAzureWebAppDiagnostics(ILoggingBuilder
builder, IWebAppContext context)
at
Microsoft.Extensions.Logging.AzureAppServicesLoggerFactoryExtensions.AddAzureWebAppDiagnostics(ILoggingBuilder
builder)
at sevacation.Program.<>c.b__1_0(ILoggingBuilder
logging) in D:\a\s\sevacation\Program.cs:line 22
at
Microsoft.Extensions.Hosting.HostingHostBuilderExtensions.<>c__DisplayClass5_0.b__1(ILoggingBuilder
builder)
at
Microsoft.Extensions.DependencyInjection.LoggingServiceCollectionExtensions.AddLogging(IServiceCollection
services, Action`1 configure)
at
Microsoft.Extensions.Hosting.HostingHostBuilderExtensions.<>c__DisplayClass5_0.b__0(HostBuilderContext
context, IServiceCollection collection)
at Microsoft.Extensions.Hosting.HostBuilder.CreateServiceProvider()
at Microsoft.Extensions.Hosting.HostBuilder.Build()
at sevacation.Program.Main(String[] args) in
D:\a\s\sevacation\Program.cs:line 17
目前似乎有一个 issue 的 .zip 部署(截至 2019 年 12 月)
尝试使用不同的部署方法,例如 WebDeploy、Git 等
我们将 ASP.NET Core 3.0 Web 应用程序部署到 Azure Web Apps。为了获取日志消息,我们要使用 Azure Web Apps diagnostics。我们在 program.cs 中添加日志提供程序:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(logging => logging.AddAzureWebAppDiagnostics())
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
但是,在应用程序启动时,FileNotFoundException 被记录到标准输出(有关详细信息和堆栈跟踪,请参见下文)并且应用程序无法启动(状态代码 500.30)。
我们已经采取了以下步骤来查找原因,但到目前为止,我们没有成功:
- 我们使用了 Kudu 并断言该目录存在。目录中的 settings.json 文件模拟了我们在日志配置中设置的设置。
- 此外,我们在 program.cs 中添加了对 Directory.Exists 的调用,以验证该目录是否存在。这也返回了 true。
- 我们已经在相同的应用服务计划中使用相同的设置重新创建了同名的 Azure Web 应用;应用程序无法启动。
- 在新创建的 ASP.NET Core 3.0 项目中,我们成功地设置了日志记录,即使在我们反映了更大解决方案的一些细节之后也是如此;我们验证了以下特征不会阻止测试应用程序成功登录:
- 运行 from package 一开始没有设置(我们直接从 Visual Studio 部署了测试应用程序),但是我们创建了一个部署的构建过程一个包 运行 来自 package 集合。所以一般的构建和发布过程是相同的。
- 我们从较大的项目中复制了 web.config(已调整以将日志消息保存到标准输出)
- 我们在项目之间复制了 program.cs 的内容,因此创建虚拟主机的代码是相同的。
有谁知道这种行为的原因或我们可以用来获取更多详细信息的其他一些步骤吗?
异常详情
Unhandled exception. System.IO.FileNotFoundException: Error reading the D:\home\site\diagnostics\ directory.
at System.IO.FileSystemWatcher.StartRaisingEvents()
at System.IO.FileSystemWatcher.StartRaisingEventsIfNotDisposed()
at System.IO.FileSystemWatcher.set_EnableRaisingEvents(Boolean value)
at Microsoft.Extensions.FileProviders.Physical.PhysicalFilesWatcher.TryEnableFileSystemWatcher()
at Microsoft.Extensions.FileProviders.Physical.PhysicalFilesWatcher.CreateFileChangeToken(String filter)
at Microsoft.Extensions.FileProviders.PhysicalFileProvider.Watch(String filter)
at Microsoft.Extensions.Configuration.FileConfigurationProvider.<.ctor>b__1_0()
at Microsoft.Extensions.Primitives.ChangeToken.ChangeTokenRegistration
1..ctor(Func
1 changeTokenProducer, Action`1 changeTokenConsumer, TState state)at Microsoft.Extensions.Primitives.ChangeToken.OnChange(Func`1 changeTokenProducer, Action changeTokenConsumer)
at Microsoft.Extensions.Configuration.FileConfigurationProvider..ctor(FileConfigurationSource source)
at Microsoft.Extensions.Configuration.Json.JsonConfigurationSource.Build(IConfigurationBuilder builder)
at Microsoft.Extensions.Configuration.ConfigurationBuilder.Build()
at Microsoft.Extensions.Logging.AzureAppServices.SiteConfigurationProvider.GetAzureLoggingConfiguration(IWebAppContext context)
at Microsoft.Extensions.Logging.AzureAppServicesLoggerFactoryExtensions.AddAzureWebAppDiagnostics(ILoggingBuilder builder, IWebAppContext context)
at Microsoft.Extensions.Logging.AzureAppServicesLoggerFactoryExtensions.AddAzureWebAppDiagnostics(ILoggingBuilder builder)
at sevacation.Program.<>c.b__1_0(ILoggingBuilder logging) in D:\a\s\sevacation\Program.cs:line 22
at Microsoft.Extensions.Hosting.HostingHostBuilderExtensions.<>c__DisplayClass5_0.b__1(ILoggingBuilder builder)
at Microsoft.Extensions.DependencyInjection.LoggingServiceCollectionExtensions.AddLogging(IServiceCollection services, Action`1 configure)
at Microsoft.Extensions.Hosting.HostingHostBuilderExtensions.<>c__DisplayClass5_0.b__0(HostBuilderContext context, IServiceCollection collection)
at Microsoft.Extensions.Hosting.HostBuilder.CreateServiceProvider()
at Microsoft.Extensions.Hosting.HostBuilder.Build()
at sevacation.Program.Main(String[] args) in D:\a\s\sevacation\Program.cs:line 17
目前似乎有一个 issue 的 .zip 部署(截至 2019 年 12 月)
尝试使用不同的部署方法,例如 WebDeploy、Git 等