Mike Hankey Ответов: 2

Настройки Web. config для ошибки 405


Я пытаюсь сделать AJAX-пост в веб-приложении MVC 5.0 WebApi. Может сделать GET просто отлично, но когда я пытаюсь обновить поле с помощью GET, которое имеет большой объем данных, я получаю ошибку 405.

Я на правильном пути или смотрю не в ту сторону?

Кроме того, есть ли какая-либо хорошая/простая ссылка на параметры web.config?

Спасибо,
Майк

Что я уже пробовал:

Я перепробовал много различных вариантов в файле web.config, относящихся к WebDAV, включая его полное удаление; 1) в разделе "включение или выключение функций Windows" удалите его в файле web.config и настройте его. Это то, что у меня сейчас есть в моем файле web. config;
<system.web>
  <authentication mode="None" />
  <compilation debug="true" targetFramework="4.5.1" />
  <httpRuntime targetFramework="4.5.1" />
  <trust level="Full" />
</system.web>
<system.webServer>
  <modules runAllManagedModulesForAllRequests="true">
    <remove name="FormsAuthentication" />
  </modules>
  <handlers>
    <remove name="WebDAV" />
    <add name="WebDAV" path="*" verb="*" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" />
  </handlers>
</system.webServer>

Richard Deeming

"...обновите поле с помощью GET ..."

Запросы GET не должны ничего обновлять. :)

Mike Hankey

Я понимаю это, но когда POST, PUT не будет работать и GET, я должен использовать его до тех пор, пока не смогу решить эту проблему. GET будет работать, но у него есть колпачок, я думаю, 2K или около того, так что я должен экономить меньшими кусками.

2 Ответов

Рейтинг:
2

Sachin Kakade

Пожалуйста, проверьте ниже пример api кода для примера 405, надеюсь, он вам поможет.
устранение неполадок-http-405-ошибки-после-публикации-веб-api-приложения.


Рейтинг:
2

Mike Hankey

Обновление просто к вашему сведению для тех, кто находится в подобном положении, нашел решение после долгого скрежета зубов;

Добавить в web. config;

<modules runAllManagedModulesForAllRequests="false">
  <remove name="WebDAVModule" />
</modules>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
  <remove name="WebDAV" />
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
  <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>

и даже после этого это не сработало, поэтому после дополнительных исследований я обнаружил, что вы можете передать только один параметр в AJAX post. После того, как я изменил это, все работало отлично.