从Flex调用无参数WCF方法时出现IsEmpty错误

时间:2010-04-12 15:33:21

标签: flex wcf web-services

我有一个WCF Web服务(使用basicHTTPBinding),我从Flex应用程序连接到该服务。我正在使用FlexBuilder代码生成代理Web服务。

在我尝试在没有参数的Web服务上调用方法之前,这一直很有效。这是它的界面声明:

    [OperationContract]
    DateTime GetCurrentDateTime();

然后我开始从服务中获取HTTP 500代码响应。

使用Fiddler检查HTTP响应显示WCF报告了以下错误:

Error in deserializing body of request message for operation 'GetCurrentDateTime'. 
The OperationFormatter could not deserialize any information from the Message because the Message is empty (IsEmpty = true)

因此,似乎Flex和WCF之间存在不兼容性,因为调用没有参数的方法 - Flex不会在消息中包含任何内容,但是WCF期望有一些东西存在。

有没有办法配置Flex或WCF来解决这个问题,或者我是否必须在此类操作合同中包含虚拟参数?

1 个答案:

答案 0 :(得分:0)

我可以调用没有参数的Web请求。

WCF:

[ServiceContract]
public interface ICurrentDateTimeService
{
    [OperationContract]
    DateTime GetCurrentDate();
}

public class Service1 : ICurrentDateTimeService
{
    public DateTime GetCurrentDate()
    {
        return DateTime.Now;
    }
}

软硬度:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
           xmlns:s="library://ns.adobe.com/flex/spark" 
           xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" applicationComplete="init()">
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
    <![CDATA[
        import mx.rpc.events.FaultEvent;
        import mx.rpc.events.ResultEvent;
        import services.currentdatetimeservice.CurrentDateTimeService;

        private var service:CurrentDateTimeService = new CurrentDateTimeService();

        public function init():void {
            service.addEventListener(ResultEvent.RESULT, serviceResult);
            service.addEventListener(FaultEvent.FAULT, serviceFault);
            service.GetCurrentDate();
        }

        public function serviceResult(e:ResultEvent):void {
            trace(e.result);
        }

        public function serviceFault(e:FaultEvent):void {
            trace("Oh no! :(");
        }

    ]]>
</fx:Script>
</s:Application>

结果Thu Aug 4 01:11:12 GMT-0600 2011

你有错误事件的听众吗?