2017-05-29 61 views
0

WCFサービスを通じてオブジェクトのリストを取得しようとしています。いくつかの簡単なメソッドは正常に動作します。しかし、私はオブジェクトのリストを取得しようとするときWCF関数の呼び出し中にソケット接続が中止されました

私は次のエラーが発生します。

エラー:ソケット接続がアボートされました。これは、メッセージの処理中にエラーが発生したか、リモートホストが受信タイムアウトを超過したか、基になるネットワークリソースの問題が原因で発生している可能性があります。ローカルソケットタイムアウトは'00:59:59.9949990 'でした。 エラー:既存の接続はリモートホストに強制的に切断されました。ここ

は、クライアント構成が

<system.serviceModel> 
    <bindings> 
     <netTcpBinding> 
     <binding name="NetTcpBinding_ISurveyService" sendTimeout="00:05:00" 
      maxBufferPoolSize="20000000" maxBufferSize="20000000" maxReceivedMessageSize="20000000"> 
      <readerQuotas maxDepth="32" maxStringContentLength="200000000" 
      maxArrayLength="200000000" /> 
     </binding> 
     <binding name="NetTcpBinding_ISurveyService1" /> 
     </netTcpBinding> 
    </bindings> 
    <client> 
     <endpoint address="net.tcp://localhost:8523/SurveyService" binding="netTcpBinding" 
     bindingConfiguration="NetTcpBinding_ISurveyService" contract="SurveyApp.SurveyService.ISurveyService" 
     name="NetTcpBinding_ISurveyService"> 
     <identity> 
      <dns value="localhost" /> 
     </identity> 
     </endpoint> 
     <endpoint address="net.tcp://localhost:8523/SurveyService" binding="netTcpBinding" 
     bindingConfiguration="NetTcpBinding_ISurveyService1" contract="ServiceReference.ISurveyService" 
     name="NetTcpBinding_ISurveyService1"> 
     <identity> 
      <dns value="localhost" /> 
     </identity> 
     </endpoint> 
    </client> 
    </system.serviceModel> 

であり、これはサービスのライブラリ構成である:これは私のサービス契約である

<system.serviceModel> 
    <bindings> 
     <netTcpBinding> 
     <binding name="NetTcpBinding_ISurveyService" openTimeout="00:10:00" 
        closeTimeout="00:10:00" 
        sendTimeout="00:10:00" 
        receiveTimeout="00:10:00" 
       maxReceivedMessageSize="20000000" 
        maxBufferSize="20000000" 
        maxBufferPoolSize="20000000"> 
      <readerQuotas maxDepth="32" 
        maxArrayLength="200000000" 
        maxStringContentLength="200000000" /> 
     </binding> 

     </netTcpBinding> 
    </bindings> 
    <services> 
     <service behaviorConfiguration="WcfServiceLibrary1.Service1Behavior" 
     name="SurveyApp.SurveyService.SurveyService"> 
     <endpoint address="" binding="netTcpBinding" bindingConfiguration="NetTcpBinding_ISurveyService" 
      contract="SurveyApp.SurveyService.ISurveyService" > 
      <identity> 
      <dns value="localhost" /> 
      </identity> 
     </endpoint> 
     <endpoint address="mex" binding="mexTcpBinding" bindingConfiguration="" 
      contract="IMetadataExchange" /> 
     <host> 
      <baseAddresses> 
      <add baseAddress="net.tcp://localhost:8523/SurveyService" /> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="WcfServiceLibrary1.Service1Behavior"> 
      <serviceMetadata httpGetEnabled="false" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    </system.serviceModel> 

[ServiceContract] 
    public interface ISurveyService 
    { 
     [OperationContract] 
     string GetData(int value); 

     [OperationContract] 
     IEnumerable<Question> GetAllQuestions(); 

     [OperationContract] 
     Test GetElement(); 
    } 

これはデータ継続ですractクラス

public partial class Question 
    { 

     public Question() 
     { 
      this.QuestionOptions = new HashSet<QuestionOption>(); 
     } 

     [DataMember] 
     public int Id { get; set; } 
     [DataMember] 
     public string Description { get; set; } 

     [DataMember] 
     public virtual ICollection<QuestionOption> QuestionOptions { get; set; } 
    } 

ありがとうございました。

+0

サーバーが通話を処理できないようです。 WCFログには何が含まれていますか? –

答えて

0

QuestionOptionクラスにはQuestion型のメンバーが含まれているため、シリアル化中に再帰呼び出しがあったため、タイムアウトが発生します。

関連する問題