AdobeFlexクライアント用の.net2(ASMX)Webサービスがあります。ほとんどのサービスメソッドはXMLを返し、すべて正常に機能しますが、私のSaveChanges()
メソッドはXmlを受け入れてブール値を返します。このメソッドが呼び出されると、100-Continueヘッダーのみがクライアントに返され、結果は返されません。Flexは(おそらくタイムアウトを)待機してから、失敗したと見なし、エラーハンドラーを起動します。
サービスのブレークポイントは、サービスメソッドの本体に到達する前に100-Continueメッセージが送信されたことを示します(予想どおり)。その後、メソッドはreturnステートメントに問題なく到達しますが、クライアントはそれ以上の応答を受信しません。
クライアントとサービス間のsoapメッセージをスニッフィングするようにメンブレンを設定しましたが、サービスからの応答も表示されませんが、報告されているように見えるリクエストに追加された「期待値:100-続行」も表示されません割り当てる。
編集 :
returnステートメントに達した後に応答メッセージが送信されるのを防ぐにはどうすればよいですか?
他のサービスメソッドからの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>