我正在开发部署到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的推荐而没有运气。
我在这里错过了什么?
请确保在发布模式下在csproj中跟随PropertyGroup
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<DocumentationFile>bin\Release\netcoreapp2.2\APIProject.xml</DocumentationFile>
</PropertyGroup>
另外请确保您在c#项目中引用相同的.xml文件。看看它是否有帮助。
请记住,在“项目属性”下的“构建”选项卡中,您需要勾选“XML文档文件”框。
附:请使用您在项目中使用的受尊敬的Dot Net Core版本。