0

以下の署名で WCF POST サービスを作成しました。これは IIS で正常にホストされており、サービスのヘルプ ページで次のように確認できます。

[OperationContract]
    [WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped,
        RequestFormat = WebMessageFormat.Xml,
        ResponseFormat = WebMessageFormat.Xml,
        Method = "POST",
        UriTemplate = "TestMethod/{lang}/{str}/{selectedstring}/")]
    string TestMethod(string lang, string str, string selectedstring, string mylist, int testval);

サービスのヘルプページでは、メソッドは次のように正しく表示されます

TestMethod/{lang}/{str}/{selectedstring}/ || POST || Service at http://localhost:86/MyRestService.svc/TestMethod/{LANG}/{STR}/{SELECTEDSTRING}/ 

以下のオプションでフィドラーを使用してこのサービスを呼び出そうとしています(ブログのいくつかのルックアップに基づいています):

方法: ポスト

URL - 'http://servername:86/MyRestService.svc/TestMethod/en-us/str1/qad11/'

必須 ヘッダー: ユーザーエージェント: Fiddler ホスト: サーバー名:86 コンテンツタイプ: アプリケーション/xml

リクエスト本文:

<TestMethod xmlns="http://tempuri.org/"><mylist>string val</mylist><testval>3</testval></TestMethod>

ただし、.net テスト スタブからサービスを呼び出そうとすると、常に HTTP 結果コード 411 (Length Required) が表示されます。

4

1 に答える 1

0

Fiddlerは、名前が付けられたHTTPヘッダーを計算する必要がありContent-Lengthます(少なくともv2.3.9.3では計算されます)。リクエストのrawタブで、次のようなものがないか確認します。Content-Length: nnnここで、nnnはリクエスト本文の文字列の長さです。そうでない場合は、自分で追加する必要があります。また、POSTManクロームプラグインなどのブラウザプラグインを試して、リクエストを作成することもできます。

于 2012-06-05T16:14:41.297 に答える