ASP.NET Core 1.1在本地运行良好,但在发布到Azure时说"启动应用程序时出错".

der*_*f26 50 .net c# model-view-controller azure asp.net-core

我一直在开发一个ASP.NET Core Web应用程序,主要基于Visual Studio 2017 RC2中提供的MVC模板.它在本地调试模式下运行良好,但是当我尝试将其发布到Azure托管的Web应用程序时,我收到此错误:

在此输入图像描述

启动应用程序时发生错误.

.NET Core X86 v4.1.1.0 | Microsoft.AspNetCore.Hosting版本1.1.0-rtm-22752 | Microsoft Windows 6.2.9200

我已经尝试stdoutLogEnabled="true"在web.config文件中设置,但似乎没有效果,错误是一样的.

更新:

在一些帮助下,我设法检索日志,它说:

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.
Run Code Online (Sandbox Code Playgroud)

它在第73行引用的代码行是:

services.AddMvc();
Run Code Online (Sandbox Code Playgroud)

更新:

我的global.json文件看起来像这样(其中Bla.Api是项目的名称,文件位于解决方案根文件夹中).

{
  "projects": [ "Bla.Api" ],
  "sdk": {
    "version": "1.1.0"
  }
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*and 130

由于许多不同的问题可能导致此错误页面,我强烈建议以下内容,以便快速,轻松地确定根本原因,而无需摔跤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<Startup>()
      .CaptureStartupErrors(true)
      .Build();

  host.Run();
}
Run Code Online (Sandbox Code Playgroud)

(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<Startup>()
            .Build();
}
Run Code Online (Sandbox Code Playgroud)
  • 一旦完成故障排除,应立即删除这些设置,以免您的应用程序遭受恶意攻击.

  • 这真的帮助我找出问题所在!非常感谢! (2认同)
  • @ Met-u是的,就是这样.不要忘记您需要在`Web.config`中为每个环境手动设置这些变量(请参阅https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/aspnet- core-module#setting-environment-variables)或在服务器上手动操作:/sf/answers/2908600061/ (2认同)

Pet*_*ete 8

通过sftp客户端连接并手动删除站点/ wwwroot文件夹中的所有内容.重新发布

自从我将Azure上托管的应用程序从MVC 4迁移到.net核心以来,我什么都没有问题.

几周前,我在成功发布后无法获得项目.我甚至尝试过两次删除整个App Service配置文件并使用相同的名称重新创建它.但是,当我在App Service名称中附加一个'2'(以创建一个从未使用过的应用程序服务)时,发布完全相同的0项更改项目.如果我可以成功发布到新的应用服务而不是已删除并重新创建的应用服务,那么删除究竟做了什么?在每个发布中检查了在目标中删除现有文件,这些文件也没有执行任何操作.

我今天遇到了同样的错误,就像在我的#2网站的OP中所描绘的那样.它是在尝试更新一些asp nuget软件包并重新部署之后发生的.真的不想继续迭代我的app服务的myApp3,我决定使用azure概述页面中提供的FTP信息.我导航到Site/wwwroot并从FTP客户端删除了所有内容.然后我发布了应用程序,它工作正常.我只能得出结论,"删除"复选框无法正常工作.


der*_*f26 6

谢谢大家的建议.最终唯一有用的就是删除我无法发布的Azure网络应用程序,并创建一个全新的.我想也许上一个运行时环境中的一些.dll仍在闲逛或没有更新......无论是什么,重新创建它都有效.希望我不会再次出现这个错误,因为你不能在生产中真正做到这一点.

对global.json文件进行更改似乎没有任何效果.

从模板创建一个全新的API也没有帮助,问题出在Azure Web App本身,因为一切都在本地运行良好.

另一个非常有用的提示是根据另一个答案添加日志记录(以及根目录中的"logs"文件).这至少指出了我正确的方向.还要检查运行时dotnet --version.

再次感谢大家的帮助!


wtf*_*512 5

我有同样的问题。只是未部署在Azure上,我将本地计算机用作服务器并将其托管在IIS中。

An error occurred while starting the application.

.NET Core X64 v4.1.1.0    |   Microsoft.AspNetCore.Hosting version 1.1.1    |    Microsoft Windows 10.0.14393    |   Need help?
Run Code Online (Sandbox Code Playgroud)

这是通过更改web.config解决的。

第一组 stdoutLogEnabled = "true"

然后确保stdoutLogFile=".\logs\stdout" />该文件夹存在。

然后重新启动IIS,您可以在日志文件中找到真正的问题。