15

RESTful WCF サービスを作成しているときに、WebInvoke属性の Method パラメーターで大文字と小文字が区別される (CAPS が必要) ことに気付きました。

そう、

[WebInvoke(Method = "Delete")]

等しくない

[WebInvoke(Method = "DELETE")]

この間違いが原因でしたProtocolException:

System.ServiceModel.ProtocolException: リモート サーバーが予期しない応答を返しました: (405) メソッドは許可されていません。

上記の例の「DELETE」の代わりに使用する必要がある一連の定数が .NET フレームワークにあるのではないかと考えていました。もちろん、独自の定数セットを定義することもできますが、おそらくフレームワークに存在するもののように感じ、それを見逃しているだけです。

4

2 に答える 2

12

少し間接的ですが、System.Net.WebRequestMethods.Http定数があります。

public const string Connect = "CONNECT";
public const string Get = "GET";
public const string Head = "HEAD";
public const string MkCol = "MKCOL";
public const string Post = "POST";
public const string Put = "PUT";

ただし、「削除」はありません-独自に作成することをお勧めします...

厄介なことに、 がありますが、System.Web.HttpVerbそれはinternalであるため使用できません。これは列挙型であるため、属性で名前を使用するには、少しハッカーが必要です。

于 2009-02-01T09:54:09.103 に答える