Azure App服务无法启动,因为它无法使用ASP.NET Core

时间:2017-12-21 06:58:21

标签: azure asp.net-web-api visual-studio-2017 .net-core azure-web-app-service

更新2:该文件未发布。这是错的。但是,我无法弄清楚为什么我的一台计算机能够以正确的方式发布它,而另一台计算机不能在Visual Studio升级之后发布。

更新:在两台不同的计算机上运行相同的解决方案,其中APIProject.xml文件从一台计算机正确发布而另一台计算机没有正确发布,现在只剩下一个区别。发布工作的计算机运行Visual Studio 2017 Enterprise的未更新版本。 15.5.2不起作用,15.4.2起作用。

我收到了这个错误:

  

FileNotFoundException:找不到文件   'd:\家\站点\ wwwroot的\ APIProject.xml'

该文件放在bin \ Debug \ netcoreapp2.0中 它在本地工作,但发布到Azure App服务时崩溃。

我正在发布我创建的暂存插槽,尚未尝试生产。发布将替换目标上的所有文件。

这是我的Swagger设置,但过去常常工作:)

public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();

        // Register the Swagger generator, defining one or more Swagger documents
        services.AddSwaggerGen(c =>
        {
            c.SwaggerDoc("v1", new Info
            {
                Version = "v1",
                Title = "Ecommerce/Product API",
                Description = "Handles API based shopping functionality",
                TermsOfService = "Terms of service should be contracted with inidividually",
                Contact = new Contact { Name = "Magnus", Email = "magnus@secret", Url = "" },
                License = new License { Name = "Use under permission from our Group", Url = "http://aboutno" }
            });

            // Set the comments path for the Swagger JSON and UI.
            var basePath = PlatformServices.Default.Application.ApplicationBasePath;
            var xmlPath = Path.Combine(basePath, "APIProject.xml");
            c.IncludeXmlComments(xmlPath);
        });   
    }

改变之处是我在Program.cs中添加了“UseSetting”-row以获取无法启动的错误。在添加该行之前,我没有收到开发人员错误,只有最终用户错误页面。

public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseApplicationInsights()
            .UseSetting(WebHostDefaults.DetailedErrorsKey, "true")
            .UseStartup<Startup>()
            .Build();

我正在尝试使用调试模式发布。也尝试使用Release作为下面的一个答案,但没有区别。

我检查了另一台计算机上的代码并从该计算机上发布了,所以这个问题对我来说更加奇怪了!

4 个答案:

答案 0 :(得分:2)

确保调试和释放模式中的csproj文件中存在等效块。我猜你正在发布发布模式。

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <DocumentationFile>bin\Release\netcoreapp2.0\APIProject.xml</DocumentationFile>
</PropertyGroup>

答案 1 :(得分:2)

今天,当我发布由.NET Core 2.1支持的ASP.NET核心Web应用程序到Azure App Service时,我遇到了同样的问题。

在调试模式下运行时,它在本地工作正常,但在Release中失败。原因是我在*.csproj文件中没有以下配置部分。

<Project Sdk="Microsoft.NET.Sdk.Web">
...
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <DocumentationFile>bin\Release\netcoreapp2.1\OneGit.Api.xml</DocumentationFile>
  </PropertyGroup>
...
</Project>

代表XML documentation file =&gt;部分中的复选框Build。右键单击项目并选择菜单项Output时,Properties

答案 2 :(得分:1)

我的 .Net Core 2.0 应用程序在本地运行良好,但是在部署到Azure时抛出了毫无意义的“ 启动应用程序时发生错误。”错误。

检查日志,原因是Swagger找不到特定的.xml文件(为什么该错误消息不会让我们知道?!)

解决方案是选择“构建”选项卡,将“配置”下拉列表更改为“发布”,然后勾选此框:

enter image description here

就是这样。

由于某种原因,默认情况下,它被选中(填充.xml文件名)用于调试,但未选中发行版。

(叹气)

答案 3 :(得分:0)

将发布配置从发行版更改为调试解决了我的问题。 enter image description here