我正在研究部署到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的建议,
我在这里想念什么?
答案 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版本。