0

我有一个用于 Adob​​e Flex 客户端的 .net 2 (ASMX) Web 服务。大多数服务方法返回 XML 并且一切正常,但是我的SaveChanges()方法接受 Xml 来返回布尔值。每当调用此方法时,它只会向客户端返回 100-Continue 标头并且没有结果,Flex 等待(可能是超时)然后认为它失败并启动错误处理程序。

服务中的断点显示 100-Continue 消息在到达服务方法的主体之前发送(如预期的那样),然后该方法很好地到达 return 语句,但客户端没有收到进一步的响应。

我已经设置了Membrane来嗅探客户端和服务之间的肥皂消息,它也看不到来自服务的响应,而且在似乎报告的请求中也看不到添加的“期望: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