Azure应用服务API获取FileNotFoundException:尝试启动时无法找到文件'D:\ home \ site \ wwwroot \ MyApi.xml

时间:2019-03-22 13:15:13

标签: c# asp.net-core azure-web-sites swagger-ui azure-api-apps

我正在研究部署到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类中->配置方法,我已经拥有了

app.UseStaticFiles(); 

这类似于SO帖子here,但在该帖子中,该文件实际上并未显示在wwwroot中,而在我看来,它确实存在。

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

My 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认为的。

更新1

我也尝试过this SO link中有关ASP.NET 2.2的建议,

我在这里想念什么?

1 个答案:

答案 0 :(得分:1)

请确保您具有在发布模式下跟随csproj中的PropertyGroup之类的内容

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:cmd="http://www.galasoft.ch/mvvmlight"

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

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

PS 。请使用您在项目中使用的受尊重的Dot Net Core版本。