[英]Using a WCF Service with Complex Data Types
我正在嘗試通過內部帶有一個導航屬性IEnumerable <>的DTO,當我傳遞不帶有子列表的對象時,它運行良好,但是,當我傳遞帶有子代和孫代的對象時,WCF服務不會響應,並且沒有給我任何錯誤。 我必須做出一些處理才能專門處理此類對象嗎?
這是我的數據合同
[ServiceContract]
public interface IProdutoService
{
[OperationContract]
CategoriaResponse GetCategoria(CategoriaRequest request);
[OperationContract]
ProdutoResponse GetProduto(ProdutoRequest request);
[OperationContract]
CategoriaResponse ManageCategoria(CategoriaRequest request);
[OperationContract]
ProdutoResponse ManageProduto(ProdutoRequest request);
}
//and then my DTO Class
public class ProdutoDto
{
#region Primitive Properties
[DataMember]
public Int32 Codigo { get; set; }
[DataMember]
public Int32 CodigoCategoria { get; set; }
[DataMember]
public String Descricao { get; set; }
[DataMember]
public Decimal? Preco { get; set; }
#endregion
#region Navigation Properties
[DataMember]
public CategoriaDto Categoria { get; set; }
[DataMember]
public VendaDto[] Vendas { get; set; }
#endregion
}
//並且我的服務配置如下所示:
<services>
<service behaviorConfiguration="behaviorAction" name="Uniarchitecture.ProdutoService.ServiceImplementations.ProdutoService">
<endpoint binding="wsHttpBinding" bindingConfiguration="bindingAction" contract="Uniarchitecture.ProdutoService.ServiceContracts.IProdutoService">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="behaviorAction">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<wsHttpBinding>
<binding name="bindingAction" transactionFlow="false" receiveTimeout="00:30:00" >
<reliableSession enabled="true"/>
</binding>
</wsHttpBinding>
</bindings>
您的子對象可能未標記為可序列化。
它看起來也好像您缺少DataContract屬性。
從下面的注釋中可以看出,您有一些無法序列化的對象。 遍歷您使用的所有對象,並使用可序列化或數據協定屬性對其進行標記。
那么,您必須使用合同意識循環引用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.