2010-10-29 60 views
1

所以, 我有这样的事情(?): 有一个ASP.NET应用程序(1)引用WCF服务(2)引用.NET应用程序(3)。 (1)创建查询给它(2),(2)从(3)获取一些信息,处理它并将其返回给(1)。ASP.NET到WCF序列化问题

这里是问题 - 有DataContract类请求(由(2)和(1)使用),它有一个DateTime对象。当(1)中分配了这个DateTime时,一切正常。但是,当使用此请求对象调用ServiceContract的方法时,(2)将此对象视为空(即DateTime为空)或1/1/0001。字符串和Ints工作得很好。没有例外被抛出。

CultureInfos与(1)和(2)不同,它必须保持这种状态。使用DateTime.SpecifyKind()没有帮助。

我不想欺骗和发送DateTime作为字符串,BC它只是愚蠢的。

是序列化问题吗?如果是这样,该如何解决?

我很新的这一点,所以......请,要温柔; 感谢

UPDATE

服务配置:

<service behaviorConfiguration="eServiceX.eServiceXInterfaceBehavior" name="eServiceX.ServiceXInterface"> 
      <endpoint address="" binding="basicHttpBinding" contract="eServiceXCommon.IeXService"></endpoint> 
      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 
      <host> 
      <baseAddresses> 
       <add baseAddress="http://localhost:8732/eServiceX"/> 
      </baseAddresses> 
      </host> 
</service> 
.. 
<behavior name="eService.eServiceXInterfaceBehavior"> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="true"/> 
</behavior> 

数据合同:

[DataContract] 
public class GetXRequest : Request 
{ 
     private string _name; 
     private DateTime _date; 
     [DataMember] 
     public string Name 
     { 
      get { return _name; } 
      set { _name = value; } 
     } 
     [DataMember] 
     public DateTime DateTime 
     { 
      get { return this._date; } 
      set { this._date = value; } 
     } 
} 

...和问题p艺术:

// ASP.NET app side: 
X = new eService.ServiceXInterface(); 
eService.GetXRequest rq = new eService.GetXRequest(); 
rq.Name = "Blar"; 
rq.Date = SomeDay; 
eService.GetXResponce Getter = X.GetX(rq); //here rq.Name is "Blar"; rq.Date is SomeDay 

//.. 
// WCF service side: 

[ServiceContract(Name = "IeXService")] 
public interface IeXService 
{ 
    [OperationContract] 
    GetXResponce GetX(GetXRequest request); 
} 

public GetXHResponce GetX(GetXRequest request) 
{ 
    doSMTH(request.Name, request.Date); //here request.Name is "Blar", but Date's value is 1/1/0001 
    //.. 
} 
+0

这不是不可能的,我会发布数据合同(重要部分)和服务。 – steinar 2010-10-29 13:07:03

+0

查看更新,谢谢.. – exp 2010-10-29 13:35:13

回答

2

如果任何人的兴趣,这是我的坏= [ 我定义的Web引用,而不是服务参考= [ 所以...是啊...谜解决