Как сказать IIS7 разрешить POST в текстовый файл (решить 405)?
Если я хочу разрешить HTTP POST для текстовых файлов *.txt (т.е. я беру пример того, что может быть любым статическим ресурсом, обычно доступным с помощью GET).
Ошибка:
Ошибка сервера
405 - HTTP-глагол, используемый для доступа к этой странице, запрещен. Страница, которую вы ищете, не может быть отображена, потому что неверный метод (HTTP-глагол) был использован для попытки доступа.
Как я могу сделать это?
Справочная информация: я использую apps.facebook.com, чтобы запустить мое размещенное приложение на Facebook, и теперь Facebook отправляет HTTP-запрос POST на iFrame, где размещается мое приложение. Такое поведение в Facebook уже давно, но сейчас оно навязывается. В свою очередь это заставляет меня делать вещи доступными для глагола POST.
4 ответа
Я считаю, что IIS поддерживает POST для большинства типов расширений. Вы используете IIS7 или 7.5? Я только что протестировал файл.txt в IIS7.5, и он прекрасно справляется с POST.
Я хотел бы проверить в вашем applicationHost.config (c:\windows\system32\inetsrv), найти раздел и проверить ваш обработчик StaticFile, или если у вас уже есть обработчик для вашего типа расширения. То же самое может быть установлено в вашем файле web.config. Убедитесь, что свойство глаголов допускает POST.
Быстрый обходной путь, в зависимости от того, насколько ограничен ваш доступ к приложениям, требующим доступа администратора, заключается в переименовании в правильно настроенный тип файла. Вы можете, например, предоставить статический контент в виде файла aspx.
Замените "file.txt" на "file.aspx", и все готово (если aspx разрешено обрабатывать POST, что должно быть по умолчанию).
Я использую IIS7, и мне нужно было перейти в папку, в которую я хотел отправить сообщение в диспетчере IIS, а затем перейти к "Фильтрация запросов", и вы можете добавить "глаголы", такие как post, get..
Это удалит ошибку 405..
У меня была похожая проблема. Наше приложение пыталось отправить запросы 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>