Можно ли настроить ASMX для ответа на запрос HTTP 1.1 OPTIONS?

Похоже, что ASMX неявно не разрешает глагол OPTIONS. Я отправляю этот вопрос, потому что я использую вызовы jQuery AJAX с POST, которые сначала запрашивают у сервера доступные ОПЦИИ до того, как будет выдана команда POST **.

По умолчанию Web.config сопоставляет все команды с устаревшим ASMX, как показано в этом частичном примере конфигурации, поэтому все должно маршрутизироваться правильно:


    
        
          
          
          
        
    


    

Однако HTTP-ответ всегда 405 для запроса OPTIONS. Например, дается следующий запрос:

OPTIONS http://localhost:35920/MarkupTransfomer.asmx HTTP/1.1
Host: localhost:35920
Access-Control-Request-Method: POST

и всегда приводит к следующему:

HTTP/1.1 405 Method Not Allowed
Server: Microsoft-IIS/7.5
X-AspNet-Version: 2.0.50727

Вызов jQuery AJAX выглядит следующим образом, рекомендация из недавнего сообщения в блоге Encosia по работе с ASMX:

    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "http://localhost:35920/MarkupTransfomer.asmx",
        data: "{'hi'}",
        dataType: "json"
    });

​​** Примечание : я не хочу переключать клиента на использование GET вместо POST.

Сводный вопрос:
Могу ли я настроить ASP.NET, чтобы разрешить ASMX обрабатывать запросы OPTIONS без ошибок?

Другие идеи, которые я рассмотрел

  • Я могу найти способ сказать jQuery.ajax (..) не выдавать глагол OPTIONS перед POST?

  • Если то, что я прошу от устаревшего ASMX, невозможно, я рассмотрел две другие потенциальные идеи:

    1. реализовать System.Web.IHttpHandler , вставить его в web.config Раздел обработчиков для управления только запросами verbs = OPTIONS к path = *.asmx за пределами стандартного поведения ASMX. Это было бы возможным обходным путем.
    2. Я могу перейти на использование WCF. Однако я хочу сначала узнать, не слишком ли громоздок ASMX.

Прежде чем действовать, я хочу спросить у сообщества, что я мог упустить из виду, или найти лучшие варианты (без слов).

ОБНОВЛЕНИЕ №1

Да, моя веб-служба размещается в другом домене. По-видимому, существует множество проблем, связанных с использованием той же исходной политики. Это обновление определенно является полезной информацией в контексте вопроса, учитывая все обстоятельства!
Однако я хочу, чтобы этот вопрос оставался на уровне сервера ASMX и HTTP. Хотя в ближайшем будущем у меня могут возникнуть связанные с этим проблемы с браузером, они не имеют значения для решения этого вопроса на уровне протокола HTTP. Спасибо.

6
задан John K 21 November 2011 в 05:30
поделиться