0

AdobeFlexクライアント用の.net2(ASMX)Webサービスがあります。ほとんどのサービスメソッドはXMLを返し、すべて正常に機能しますが、私のSaveChanges()メソッドはXmlを受け入れてブール値を返します。このメソッドが呼び出されると、100-Continueヘッダーのみがクライアントに返され、結果は返されません。Flexは(おそらくタイムアウトを)待機してから、失敗したと見なし、エラーハンドラーを起動します。

サービスのブレークポイントは、サービスメソッドの本体に到達する前に100-Continueメッセージが送信されたことを示します(予想どおり)。その後、メソッドはreturnステートメントに問題なく到達しますが、クライアントはそれ以上の応答を受信しません。

クライアントとサービス間のsoapメッセージをスニッフィングするようにメンブレンを設定しましたが、サービスからの応答も表示されませんが、報告されているように見えるリクエストに追加された「期待値:100-続行」も表示されません割り当てる。

編集 :

  1. returnステートメントに達した後に応答メッセージが送信されるのを防ぐにはどうすればよいですか?

  2. 他のサービスメソッドからの100-continueメッセージには気づきません。これを読んだのは、「実際の結果を待ってください」というHTTPです。サービスでこれを無効にして、単に結果を送信する方法はありますか?

サービス方法:

[WebMethod]
public bool saveTemplateChanges( int id, string planTitle, string xml )
{
    using ( var spd = SeatPlanDb.Connect() ) // <= HTTP/1.1 100 CONTINUE is sent before this breakpoint
    {
        var templateChangesXml = this.CalculateDifferences( id, xml, "template" );
        spd.UpdateTemplateXml( templateChangesXml );
        spd.RunTemplateSeatplanFixups( id, planTitle );
    }

    return ( true ); // <= breakpoint reached
}

リクエスト:

POST /Service.asmx HTTP/1.1
Host: localhost:58357
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20100101 Firefox/15.0.1
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
Content-type: text/xml; charset=utf-8
SOAPAction: "http://tempuri.org/saveTemplateChanges"
Content-length: 12073
X-Forwarded-For: 127.0.0.1

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:s="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <SOAP-ENV:Body>
    <tns:saveTemplateChanges xmlns:tns="http://tempuri.org/">
      <tns:id>100249</tns:id>
      <tns:planTitle>untitled</tns:planTitle>
      <tns:xml><performance ID="100249"><!-- Valid XML --></performance></tns:xml>
    </tns:saveTemplateChanges>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
4

0 に答える 0