所以, 我有這樣的事情(?): 有一個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
//..
}
這不是不可能的,我會發布數據合同(重要部分)和服務。 – steinar 2010-10-29 13:07:03
查看更新,謝謝.. – exp 2010-10-29 13:35:13