Azure App Service API获取FileNotFoundException:尝试启动swagger时找不到文件'D:\ home \ site \ wwwroot \ MyApi.xml

问题描述 投票:0回答:1

我正在开发部署到Azure App Services的ASP.NET Core 2.2 API。我正在部署到DEV插槽。

我正在使用Swagger,它在我的本地主机上工作正常,但是当我转到DEV插槽的URL并使用/ swagger时,我得到错误;

FileNotFoundException: Could not find file 'D:\home\site\wwwroot\MyApi.xml 

我的* .csproj文件中有以下内容;

<PropertyGroup>
  <GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>  

当我去Kudu寻找DEV插槽时,我可以在/ site / wwwroot文件夹中看到MyApi.xml文件。如果我在Kudu中编辑它,我可以看到内容是预期的。

在我的项目的Startup.cs类 - > Configure方法中,我有;

app.UseStaticFiles(); 

这类似于SO post here,但是在那篇文章中,文件实际上并没有出现在wwwroot中,而在我的情况下,确实如此。

API可以正常工作,因为我可以使用Postman来测试DEV插槽中的所有API端点。只是当我尝试从Chrome访问DEV插槽URL + / swagger时,我得到了FileNotFound异常。

我的Startup.cs - > ConfigureServices方法有以下几点;

services.AddSwaggerGen(
    options =>
    {
        // integrate xml comments
        options.IncludeXmlComments(XmlCommentsFilePath);
    });

并且XmlCommentsFilePath方法如下;

private static string XmlCommentsFilePath
{
    get
    {
        var basePath = PlatformServices.Default.Application.ApplicationBasePath;
        var fileName = typeof(Startup).GetTypeInfo().Assembly.GetName().Name + ".xml";
        return Path.Combine(basePath, fileName);
    }
}

我假设Swagger设置是正确的,因为它在本地工作,并且我在部署到DEV插槽时得到的错误是FileNotFound指向D:\ home \ site \ wwwroot \ MyApi.xml,其中该文件实际上确实存在根据Kudu for那个插槽。

更新1

我也在this SO link尝试了对ASP.NET 2.2的推荐而没有运气。

我在这里错过了什么?

c# asp.net-core azure-web-sites swagger-ui azure-api-apps
1个回答
1
投票

请确保在发布模式下在csproj中跟随PropertyGroup

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

另外请确保您在c#项目中引用相同的.xml文件。看看它是否有帮助。

请记住,在“项目属性”下的“构建”选项卡中,您需要勾选“XML文档文件”框。

附:请使用您在项目中使用的受尊敬的Dot Net Core版本。

© www.soinside.com 2019 - 2024. All rights reserved.