【发布时间】:2013-11-28 19:52:47
【问题描述】:
我创建了一个 WCF 服务并将其托管在 IIS 上,我成功地从一个 windows Mobile 6.0 应用程序调用了该服务,并且可以轻松地从该服务中检索数据。
问题是当我尝试向服务发布数据时,我发现发送给服务的类对象的属性都是null。
另一个问题,当我创建服务代理时,我发现所有通用参数(例如List<Customer>)都转换为数组(例如Customer[])。
这是我在服务中的代码示例:
[ServiceContract]
public interface ITest
{
[OperationContract]
long AddBoxTransaction(BOXTRANSACTION boxTransaction);
}
这是客户端的代码示例:
BOXTRANSACTION boxTransaction = new BOXTRANSACTION();
{
boxTransaction.BOXID = long.Parse(dr["BoxId"].ToString());
boxTransaction.TRANSACTIONDATE = DateTime.Parse(dr["TransactionDate"].ToString());
boxTransaction.STATUSID = long.Parse(dr["StatusId"].ToString());
if(!(dr["CollectorUserId"] is System.DBNull))
boxTransaction.COLLECTORUSERID = int.Parse(dr["CollectorUserId"].ToString());
boxTransaction.CURRENTLOCATIONID = int.Parse(dr["CurrentLocationId"].ToString());
if (!(dr["ShelfNumber"] is System.DBNull))
boxTransaction.SHELFNUMBER = int.Parse(dr["ShelfNumber"].ToString());
if (!(dr["CabinetNumber"] is System.DBNull))
boxTransaction.CABINETNUMBER = int.Parse(dr["CabinetNumber"].ToString());
//boxTransaction.NUMBEROFDOCUMENTS = int.Parse(dr["NumberOfDocuments"].ToString());
};
long x;
bool y;
LPPFAObj.AddBoxTransaction(boxTransaction,out x, out y);
这里是配置文件:
<services>
<service name="TestService.Test" behaviorConfiguration="svcBeh">
<host>
<baseAddresses>
<add baseAddress="http://localhost:81/ITest"/>
</baseAddresses>
</host>
<endpoint address="" binding="basicHttpBinding" contract="TestService.ITest"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="svcBeh">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
【问题讨论】:
-
@nvoigt,我已经有了这个注释,我可以轻松地交换值类型,只有当我尝试导出用户定义的类型时,我发现所有属性都是空的。此外,我用来生成代理的向导没有任何设置,因为我正在使用 Add WebReference 菜单。
标签: c# wcf windows-mobile