簡體   English   中英

對復雜數據類型使用WCF服務

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM