我从目标c调用.Net WCF服务。我必须传递类型'类别'在我传递对象之前,我必须初始化它的代码,然后是代码:
SDZiPadDocSyncService *service = [[SDZiPadDocSyncService alloc]init];
service.logging = YES;
SDZCategory *cat = [[SDZCategory alloc]init];
cat.categoryId = [catId intValue];
[service getDocsByCatId:self action:@selector(getDocsByCatIdHandler:) category:cat];
当呼叫到达SQL Server时,categoryId为0.由于没有Id = 0的任何类别,该服务返回0条记录。有人可以帮帮我吗?
答案 0 :(得分:0)
WCF服务可能无法正确反序列化请求。要验证sudzc正在生成WCF服务所需的soap XML,请使用the WcfTestClient.exe app that comes with Visual Studio来调用该getDocsByCatId
方法。在请求/响应面板中,您将看到XML选项卡。将sudzc XML与该选项卡中的XML进行比较。
有时,WCF希望在SOAP正文中明确使用XML名称空间。例如,您的soap显示categoryId
元素位于xmlns="http://tempuri.org/"
XML 命名空间中,因为这是默认命名空间。确保WcfTestClient中的soap XML还将categoryId
放在http://tempuri.org/
XML命名空间中。如果不这样做,不知道如何配置sudzc。
答案 1 :(得分:0)
我终于找到了命名空间问题的解决方法。我必须在我的服务的Namespace="http://tempuri.org"
属性中添加DataContract
属性。可以在here