ASP.NET Core 1.1在本地运行良好,但发布到Azure后显示"启动应用程序时发生错误"。
ASP.NET Core 1.1在本地运行良好,但发布到Azure后显示"启动应用程序时发生错误"。
我一直在开发一个基于Visual Studio 2017 RC2提供的MVC模板的ASP.NET Core web应用程序。在本地调试模式下,它运行得很好,但是当我尝试将它发布到Azure托管的web应用程序时,我会得到以下错误:
启动应用程序时发生错误。
.NET Core X86 v4.1.1.0 | Microsoft.AspNetCore.Hosting版本1.1.0-rtm-22752 | 微软Windows 6.2.9200
我尝试在web.config文件中设置stdoutLogEnabled=\"true\"
,但它似乎没有任何效果,错误仍然存在。
更新:
在得到一些帮助后,我设法检索到了日志,它说:
Application startup exception: System.TypeLoadException: Could not load type 'System.IO.File' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'. at Microsoft.Extensions.DependencyModel.FileWrapper.OpenRead(String path) at Microsoft.Extensions.DependencyModel.DependencyContextLoader.LoadEntryAssemblyContext(IDependencyContextReader reader) at Microsoft.Extensions.DependencyModel.DependencyContextLoader.Load(Assembly assembly) at Microsoft.Extensions.DependencyModel.DependencyContext.Load(Assembly assembly) at Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider.DiscoverAssemblyParts(String entryPointAssemblyName) at Microsoft.Extensions.DependencyInjection.MvcCoreServiceCollectionExtensions.GetApplicationPartManager(IServiceCollection services) at Microsoft.Extensions.DependencyInjection.MvcCoreServiceCollectionExtensions.AddMvcCore(IServiceCollection services) at Microsoft.Extensions.DependencyInjection.MvcServiceCollectionExtensions.AddMvc(IServiceCollection services) at Bla.Api.Startup.ConfigureServices(IServiceCollection services) in C:\Users\user\Source\Workspaces\Bla\Bla.Api\src\Bla.Api\Startup.cs:line 73 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Microsoft.AspNetCore.Hosting.ConventionBasedStartup.ConfigureServices(IServiceCollection services) at Microsoft.AspNetCore.Hosting.Internal.WebHost.EnsureApplicationServices() at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication() Hosting environment: Production Content root path: D:\home\site\wwwroot Now listening on: http://localhost:1264 Application started. Press Ctrl+C to shut down.
它所引用的代码行(第73行)是:
services.AddMvc();
更新:
我的global.json文件如下(其中Bla.Api是项目名称,该文件位于解决方案根文件夹中)。
{ "projects": [ "Bla.Api" ], "sdk": { "version": "1.1.0" } }
通过sftp客户端连接并手动删除站点 /wwwroot 文件夹中的所有内容。重新发布
自从将我在Azure上托管的应用程序从MVC 4迁移到.net核心以来,我一直遇到问题。
几周前,我有一次在成功发布后无法运行项目的经历。 我甚至尝试两次删除整个应用程序服务配置文件,并使用相同的名称重新创建。 但是,当我在应用程序服务名称后添加“2”(创建一个以前从未使用过的应用程序服务)时,完全相同的项目发布却能够完美运行。 如果我可以成功发布到新的应用程序服务而不能发布到已删除和重新创建的应用程序服务,那么删除到底会做什么呢? 在每次发布时都选中“删除目标处现有文件”,但这也没有效果。
今天我在我的#2网站中遇到了与OP中所示的相同错误。 在尝试更新一些asp nuget包并重新部署之后发生了这种情况。 我真的不想去尝试使用应用程序服务的myApp3迭代,于是我决定使用Azure概述页面中提供的FTP信息。 我从FTP客户端导航到Site/wwwroot并删除了其中的所有内容。 然后我发布了应用程序,并且它可以工作。 我只能得出结论,删除复选框不能正常工作。
由于许多不同的问题都可能导致此错误页面,因此我强烈建议以下步骤,以便快速轻松地确定根本原因,而无需在 Azure(或任何服务器/平台)上搏斗以获取日志。
您可以通过在 Program.cs 文件中设置.UseSetting("detailedErrors","true")
和.CaptureStartupErrors(true)
操作来启用非常有用的开发人员友好的错误消息。
对于 ASP.NET Core 1.x
public static void Main(string[] args) { var host = new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseSetting("detailedErrors", "true") .UseIISIntegration() .UseStartup() .CaptureStartupErrors(true) .Build(); host.Run(); }
(2018/07) 适用于 ASP.NET Core 2.1 的更新
public class Program { public static void Main(string[] args) { BuildWebHost(args).Run(); } public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .CaptureStartupErrors(true) .UseSetting("detailedErrors", "true") .UseStartup() .Build(); }
- 在故障排除完成后应立即删除这些设置,以免将您的应用程序暴露给恶意攻击。