首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Azure应用程序服务无法启动,因为它无法使用ASP.NET核心找到swagger文档xml

Azure应用程序服务无法启动,因为它无法使用ASP.NET核心找到swagger文档xml
EN

Stack Overflow用户
提问于 2017-12-21 14:58:21
回答 4查看 4.1K关注 0票数 6

更新2:文件未发布。这就是问题所在。但是,我不明白为什么在Visual studio升级之后,我的一台计算机可以正确地发布它,而另一台计算机却不能。

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

我得到了这个错误:

FileNotFoundException:找不到文件'D:\home\site\wwwroot\APIProject.xml‘。

该文件放置在bin\Debug\netcoreapp2.0中,它在本地工作,但当发布到Azure应用程序服务时,它会崩溃。

我正在发布到我创建的暂存槽中,但还没有尝试生产。发布将替换目标中的所有文件。

下面是我的Swagger设置,但它以前是有效的:)

代码语言:javascript
复制
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,以获得它无法启动的错误。在添加该行之前,我没有得到开发人员错误,只得到了最终用户错误页面。

代码语言:javascript
复制
public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseApplicationInsights()
            .UseSetting(WebHostDefaults.DetailedErrorsKey, "true")
            .UseStartup<Startup>()
            .Build();

我正在尝试使用调试模式进行发布。我也尝试了释放,因为下面的一个答案,但没有区别。

我在另一台计算机上签出了代码,并在那台计算机上发布代码,所以这个问题对我来说变得更加奇怪!

EN

回答 4

Stack Overflow用户

发布于 2018-06-25 23:09:19

我的Azure Core2.0应用程序在本地运行得很好,但在部署到.Net时抛出了一个毫无意义的“启动应用程序时发生错误。”错误。

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

解决方案是选择Build选项卡,将Configuration下拉列表更改为"Release",然后勾选此框:

就这样。

由于某些原因,在默认情况下,它被勾选(填写了.xml文件名)用于调试,而不是用于发布。

(叹息。)

票数 18
EN

Stack Overflow用户

发布于 2017-12-22 13:07:55

确保在Debug和Release模式下的csproj文件中存在等效的块。我猜你发布的是发布模式。

代码语言:javascript
复制
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <DocumentationFile>bin\Release\netcoreapp2.0\APIProject.xml</DocumentationFile>
</PropertyGroup>
票数 4
EN

Stack Overflow用户

发布于 2018-05-31 09:07:25

今天,当我向.NET应用服务发布基于Azure Core2.1的ASP.NET核心Web应用程序时,我也面临着同样的问题。

当在Debug模式下运行时,它在本地运行良好,但在发布时失败。原因是我在*.csproj文件中没有下面的配置节。

代码语言:javascript
复制
<Project Sdk="Microsoft.NET.Sdk.Web">
...
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <DocumentationFile>bin\Release\netcoreapp2.1\OneGit.Api.xml</DocumentationFile>
  </PropertyGroup>
...
</Project>

当右键单击项目并选择菜单项Properties时,它表示Build => Output部分中的复选框Properties

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47919553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档