Я работаю над 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 моего проекта -> 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, где этот файл действительно существует согласно Куду для этого слота.
UPDATE 1
Я также пыталсярекомендация для ASP.NET 2.2 в этой SO ссылке без везения.
Чего мне здесь не хватает?