次のようなWebサービスがあります。
[WebInvoke(UriTemplate = "/{userName}/?key={key}&machineName={machineName}", Method = "PUT")]
public HttpResponseMessage<SomeStuffPutResponse> PutSomeStuff(string userName, string key, string machineName, string theTextToPut)
{
// do stuff
}
私の global.asx は次のようになります。
RouteTable.Routes.MapServiceRoute<SomeStuffService>("1.0/SomeStuff", new HttpHostConfiguration());
C# HttpClient または fiddler を介して Web サービスにアクセスすると、500 がスローされ、メソッドに到達しません。一連のログを追加しましたが、次のエラーが発生しています。
サービス操作 'PutSomeStuff' は、入力パラメーター 'requestMessage' のタイプ 'String' に割り当て可能な値を期待していましたが、タイプ 'HttpRequestMessage`1' の値を受け取りました。
更新: theTextToPut 変数をカスタム オブジェクトにすると、正常に動作します。文字列のようなプリミティブ型の場合、問題が発生するだけです。