2

VS2008 (3.5) で記述された IIS6 でローカルに実行されている WCF REST サービスがあります。

svc ファイルの asp.net ISAPI マッピングは、すべての動詞を受け入れるように構成されています。ワイルドカード スクリプト マッピングを有効にして、拡張子のない URI が URL 書き換えを介してサービスと連携できるようにしました。

そのため、.svc ファイルを指定して REST サービスへの PUT を実行すると、問題なく動作します。svc を省略して同じことを行うと、405 が返されます。

すなわち

http://thehost/therestmethod = 405 http://thehost/theservice.svc/therestmethod = 200

URL で記述されたすべてのバージョンは、唯一の例外である PUT で機能します! 拡張子のないバージョンで PUT を試行すると、URL の書き換えは成功しましたが、エラーが発生したため、書き換えが成功したことがわかりました。

WCF トレースを使用してみましたが、エラーがログに記録されません。まだそこまで来てないみたい?!?!

4

1 に答える 1

0

ここから撮影:

HTTP 動詞: ほとんどのファイアウォールと Web クライアントは HTTP GET 動詞と POST 動詞を許可していますが、一部の動詞は PUT、DELETE、およびその他の動詞をサポートしていません。このようなサポートされていない動詞の呼び出しを有効にするには、POST 要求で X-HTTP-Method-Override HTTP ヘッダーを使用して、呼び出すメソッドを指定するのが一般的な方法です。XHttpMethodOverride サンプルは、この機能を実装する方法を説明しています。

IIS url の書き換え/許可された動詞チェック コードで何かが完全に調整されていないと思います。
お役に立てれば。

于 2011-11-11T16:29:08.707 に答える