«Метод 405 не разрешен» только в Firefox 6, но не в IE 9 при вызове службы WCF - PullRequest
3 голосов
/ 15 сентября 2011

У меня есть служба WCF, размещенная на http://localhost:8080,, а веб-приложение на http://localhost:82. У меня 64-разрядная версия Windows 7 и IIS 7.5.

Страницы в веб-приложенииделает запросы AJAX службе WCF с использованием jQuery.

В IE вызовы службы выполняются нормально.В Firefox я получаю ошибку 405 Method Not Allowed.Вызовы службы, которые веб-приложение выполняет из-за кода ASP.NET, всегда выполняются успешно.

У других сборок разработчика такая же проблема.Сначала я думал, что это связано с ограничениями безопасности на нескольких сайтах, которые были введены в FF 3.5 на основе этой статьи: https://developer.mozilla.org/En/HTTP_access_control. Однако после добавления всех заголовков ответов, которые мне показались необходимыми, проблема все еще возникала.

Я выполнил команду aspnet_regiis.exe и команду WCF ServiceModelReg.exe.

Вот запрос, который Firefox делает:

OPTIONS http://localhost:8080/ScoutService.svc/Contact_Add HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Origin: http://localhost:82
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type
Pragma: no-cache
Cache-Control: no-cache

Вотответ с сервера:

HTTP/1.1 405 Method Not Allowed
Cache-Control: private
Allow: POST
Content-Length: 1565
Content-Type: text/html; charset=UTF-8
Server: Microsoft-IIS/7.5
Set-Cookie: ASP.NET_SessionId=53pqdbqgtj2cfdvtqrikiewu; path=/; HttpOnly
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Access-Control-Allow-Origin: http://localhost:82
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Max-Age: 17280
Access-Control-Allow-Headers: content-type
Access-Control-Allow-Credentials: true
Date: Thu, 15 Sep 2011 15:55:27 GMT

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Service</title>
  </head>
  <body>
    <div id="content">
      <p class="heading1">Service</p>
      <p>Method not allowed.</p>
    </div>
  </body>
</html>

Есть идеи?

1 Ответ

2 голосов
/ 15 сентября 2011

Firefox отправляет запрос OPTIONS в дополнение к POST или GET.

См. http://forums.iis.net/t/1160649.aspx, как его исправить.

Редактировать

Другая особенность вашего случая в том, что вы используете IIS 7.5, который по умолчанию не разрешает все глаголы.

Вам необходимо разрешить глагол OPTIONS

IIS 7.5, веб-служба и ошибка HTTP 405

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...