Как сказать 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>
Другие вопросы по тегам