Я работаю над API ASP.NET Core 2.2, развернутым в службах приложений Azure. Я развертываю в слот DEV.
Я использую Swagger, который отлично работает на моем локальном хосте, но когда я перехожу по URL-адресу слота DEV и использую /swagger, я получаю сообщение об ошибке;
FileNotFoundException: Could not find file 'D:\home\site\wwwroot\MyApi.xml
В моем файле *.csproj есть следующее:
<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
И когда я иду в Kudu для слота DEV, я вижу файл MyApi.xml в папке /site/wwwroot. Если я отредактирую его в Kudu, я увижу, что содержимое соответствует ожиданиям.
В моем проекте Startup.cs class -> метод Configure у меня есть;
app.UseStaticFiles();
Это похоже на сообщение SO здесь, но в этом сообщении файл на самом деле не отображался в wwwroot, тогда как в моем случае он есть.
В остальном API работает правильно, поскольку я могу использовать Postman для тестирования всех конечных точек API в слоте DEV. Просто когда я пытаюсь получить доступ к URL-адресу слота DEV + /swagger из Chrome, я получаю исключение 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, где этот файл на самом деле существует< /strong> согласно Куду для этого слота.
ОБНОВЛЕНИЕ 1
Я также попробовал рекомендацию для ASP.NET 2.2 в этой ссылке SO а> безуспешно.
Что мне здесь не хватает?