Если я хочу разрешить HTTP POST для текстовых файлов *.текст (т.е. я беру пример того, что может быть любым статическим ресурсом, обычно доступным с помощью GET).
Ошибка:
Ошибка сервера
405 - HTTP-глагол, используемый для доступа к этой странице, не разрешен. Страница, которую вы ищете, не может быть отображена, потому что для попытки доступа был использован недопустимый метод (HTTP-команда).
Как я могу этого добиться?
Задний план: Я использую apps.facebook.com, чтобы попасть в мое размещенное приложение facebook, и facebook теперь отправляет HTTP POST через iFrame, на котором размещено мое приложение. Такое поведение в facebook существует некоторое время, но сейчас оно принудительно. В свою очередь, это заставляет меня делать вещи доступными для команды POST.
Быстрый обходной путь, в зависимости от того, насколько ограничен ваш доступ к приложениям, требующим доступа администратора, - это переименование в правильно настроенный тип файла. Вы можете, например, предоставить статический контент в виде файла aspx.
Замените «file.txt» на «file.aspx», и все готово (если aspx разрешено обрабатывать POST, что должно быть по умолчанию).
Я использую IIS7, и мне пришлось перейти в папку, которую я хотел разместить в диспетчере IIS, а затем перейти к «Фильтрация запросов», и вы можете добавить «глаголы», например, отправить, получить ..
Это устранит ошибку 405 ..
Я считаю, что IIS поддерживает POST для большинства типов расширений. Вы используете IIS7 или 7.5? Я только что протестировал файл .txt в IIS7.5, и он отлично справляется с POST.
Я бы проверил ваш applicationHost.config (c: \ windows \ system32 \ inetsrv), поискал раздел и проверил ваш обработчик StaticFile, или если у вас уже есть обработчик для вашего типа расширения. То же самое может быть установлено в вашем файле web.config. Убедитесь, что свойство verbs допускает POST.
У меня была аналогичная проблема. Наше приложение пыталось отправить POST-запросы в статический файл json, размещенный в IIS. Я исправил это, обновив файл web.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="JSON" path="*.json" verb="GET,POST" modules="IsapiModule" scriptProcessor="C:\Windows\System32\inetsrv\asp.dll" resourceType="File" requireAccess="None" />
</handlers>
<security>
<requestFiltering>
<fileExtensions>
<add fileExtension=".json" allowed="true" />
</fileExtensions>
<verbs>
<add verb="POST" allowed="true" />
</verbs>
</requestFiltering>
</security>
</system.webServer>
</configuration>