2010-10-29 61 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引用,而不是服務參考= [ 所以...是啊...謎解決