2

我正在从目标 c 调用 .Net WCF 服务我必须将“类别”类型的对象传递给函数。在传递对象之前,我必须初始化它的“id”。这是代码:

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 条记录。有人可以帮我吗?

4

2 回答 2

0

WCF 服务可能没有正确反序列化请求。若要验证 sudzc 正在生成 WCF 服务所需的 soap XML,请使用Visual Studio 附带的 WcfTestClient.exe 应用程序调用该getDocsByCatId方法。在请求/响应面板中,您会看到一个 XML 选项卡。将 sudzc XML 与该选项卡中的 XML 进行比较。

有时 WCF 期望 XML 命名空间在肥皂正文中显式使用。例如,您的 soap 显示该categoryId元素位于xmlns="http://tempuri.org/" XML命名空间中,因为这是默认命名空间。确保来自 WcfTestClient 的 soap XML 也放在categoryIdXMLhttp://tempuri.org/命名空间中。如果不这样做,不知道如何配置 sudzc。

于 2012-08-15T14:14:18.027 回答
0

我终于找到了命名空间问题的解决方法。我必须在我的服务Namespace="http://tempuri.org"属性中添加一个属性。DataContract可以在此处找到此解决方法的详细说明

于 2012-08-20T01:47:40.447 回答