Asmx webmethod不发送响应

时间:2012-10-08 12:56:04

标签: c# asp.net web-services flex asmx

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

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

我已经设置Membrane来嗅探客户端和服务之间的肥皂消息,它也看不到服务的响应,但也看不到添加的“Expects:100-Continue”似乎报告分配的请求。

编辑:

  1. 什么可以阻止在到达return语句后发送响应消息?

  2. 我没有注意到来自任何其他服务方法的100-continue消息,从我读到的这是HTTP说“请等待实际结果”。有没有办法在服务中禁用它,只是发送结果?

  3. 服务方式:

    [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>
    

0 个答案:

没有答案