#asp.net-core #iis
#asp.net-ядро #iis
Вопрос:
Я получаю «Метод 405 не разрешен» при попытке удаления в моей промежуточной среде.
Есть ли что-то, на что я должен обратить внимание?
Когда я запускаю его на своем локальном компьютере (IIS 10.0), он работает нормально и может удалять идентификатор, но когда я запускаю его в своей промежуточной среде, он не работает и возвращает ошибку 405 в swagger.
Кажется, что это происходит только для всех конечных точек удаления
Вот как я реализовал конечные точки удаления:
[HttpDelete]
[Route("{Id}")]
текущий вывод из заголовка ответа:
allow: GET, HEAD, OPTIONS, TRACE
content-length: 1293
content-type: text/html
date: Mon, 14 Sep 2020 04:15:15 GMT
server: Microsoft-IIS/8.5
x-powered-by: ASP.NET
x-powered-by-plesk: PleskWin
У меня есть текущая настройка для моего startup.cs
private static void ConfigureCors(IServiceCollection services)
{
services.AddCors(o => o.AddPolicy("testAppPolicy", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.Build();
}));
}
Я знаю, что это довольно расплывчатый вопрос, но есть какие-нибудь советы о том, где я мог бы начать искать способы отладки этой ситуации?
Ответ №1:
Согласно вашему описанию и сообщению об ошибке, я предлагаю вам сначала убедиться, что вы установили правильный asp.net модуль ядра для промежуточного сервера.
Тогда я предлагаю вам попробовать удалить WebDAVModule на сервере IIS.
Для получения дополнительной информации вы можете попробовать изменить формат web.config, приведенный ниже.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<modules>
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
<!-- I removed the following handlers too, but these
can probably be ignored for most installations -->
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
</handlers>
<aspNetCore processPath="yourasp.net core config"
stdoutLogEnabled="false"
stdoutLogFile=".logsstdout" />
</system.webServer>
</configuration>
Комментарии:
1. В моем решении нет файла конфигурации, только launchsettings.json
2. Потому что, поскольку это .net core, я использую файлы json
3. Если вы размещаете приложение на сервере IIS, вам понадобится файл web.config. Размещаете ли вы свое приложение на сервере IIS?