我有一个运行SOAP的WCF服务,并允许Flex / Flash使用basicHttpBinding通过使用'Data'\'Import Web Service'选项连接到它。不幸的是,当我在Flex中使用和调用此服务时,它会抛出以下错误...
Error: Cannot find definition for type
'http://schemas.datacontract.org/2004/07/System.Drawing::Size' at
mx.rpc.xml::XMLDecoder/decodeType()
...使用以下代码时......
// This will return an array of presentations
var service:PresentationAuthoring = new PresentationAuthoring();
var token:AsyncToken = service.getAllPresentationByClientId(
mClientId , mUserId , mWCFServiceHash );
token.addEventListener( ResultEvent.RESULT, onResult );
token.addEventListener( FaultEvent.FAULT, onFault );
此方法返回由服务检索的Presentation对象数组。目前还没有DataContracts,我允许POCO Presentation对象被序列化并被服务正常运行。但是,此类具有System.Drawing.Size类型的只读属性,该属性派生自适当的高度和宽度属性。查看生成的代码,它不会在基本导入模式中注册“大小”类,尽管它似乎仍然创建了一个Size类。
另一种方法是使用[XmlIgnore]停止派生属性的序列化但是没有用。
理想情况下,我需要一种允许我的Flex应用程序与我的WCF服务进行通信的方法,但它似乎会阻塞System.Drawing.Size类型,而我可以更改它,还有其他框架类型,如Point,Rectangle在项目中使用的等等。有没有其他人遇到过这个问题,或者可以提出另一种方法?
[请注意,当.NET应用程序使用它时,WCF服务可以正常运行。]
亲切的问候和提前谢谢 - S
答案 0 :(得分:0)
答案是使用一个完美的自定义类来装入Size结构,尽管它有点令人厌烦我可能必须使用(可能)其他原生绘图结构。哼哼。