2011-09-15 10 views
3

私はhttp://localhost:8080でホストされているWCFサービスとhttp://localhost:82でWebアプリケーションを持っています。私はWindows 7 64ビットとIIS 7.5を持っています。WCFサービスを呼び出すときにFirefox 6でのみ "405メソッドは使用できません"がIE 9ではありません

Webアプリケーションのページは、jQueryを使用してAJAXリクエストをWCFサービスに送信します。

IEでは、サービスコールが正常に動作します。 Firefoxでは、405 Method Not Allowedというエラーが表示されます。 Webアプリケーションが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> 

任意のアイデア?

答えて

2

Firefoxは、POSTまたはGETに加えてOPTIONS要求を送信します。

修正方法はhttp://forums.iis.net/t/1160649.aspxを参照してください。

編集

あなたのケースでは特別で、他のものは、デフォルトですべての動詞を許可していませんIIS 7.5を使用していることです。

あなたはOPTIONSが

IIS 7.5, Web Service and HTTP 405 error

+0

ええ、私はすでにこの記事を見つけた動詞許可する必要があります。 .svcハンドラは既にすべての動詞を受け入れます。 FirefoxのHTTPアクセスコントロールについては、私がコピー/ペーストしたレスポンスからわかるように、私が必要とするレスポンスヘッダーと思われるものを追加しました。 – Tedderz

+0

@Tedderz必要な応答ヘッダーを追加しましたが、405ではなく200応答を返す必要があります。 –

+1

リンクに記載されている[WebInvoke(Method = "*")]属性が実際に見つかりませんでした。しかし、私はそれを追加すると、WCFはコンパイルエラーをスローします。契約 'xxxx'の操作 'xxxx'は、WebGetAttribute/WebInvokeAttributeでメソッド '*'を指定しますが、Methodの唯一の値はGETまたはPOSTです。他の値は、 'System.ServiceModel.Description.WebScriptEnablingBehavior'ではサポートされていません。どのようにこれを回避するためのアイデア?グーグルでは、何もかもをあまり出さないようです。 – Tedderz

関連する問題