WCF学習心得-クライアントがサービス側のカスタムクラスデータを取得

2521 ワード

プロジェクトの需要のため、WCFサービスが必要で、アヒルを追い払ってけんかしましょう.次は直接本題に入ります!
まずWCFアプリケーションを作成して、具体的にどのように作成するかは言うまでもなく、ネット上の大きな編で、私は主に自分が直面した問題について話します.
問題1:タイムアウト問題、最後にデータを取得したときに突然サービスがタイムアウトし、サービスが切断されたことを示す
解決:プロファイルの追加:
<bindings>
      <wsHttpBinding>
        <binding name="BindConfig" closeTimeout="00:01:00"
            openTimeout="00:01:00" receiveTimeout="00:30:00" sendTimeout="00:30:00"
            bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
            maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
            messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
            allowCookies="false">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
              maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <reliableSession ordered="true" inactivityTimeout="00:10:00"
              enabled="false" />
          <security mode="None">
            <transport clientCredentialType="Windows" proxyCredentialType="None"
                realm="" />
            <message clientCredentialType="Windows" negotiateServiceCredential="true"
                algorithmSuite="Default" establishSecurityContext="true" />
          </security>
        </binding>

もちろん、WSHttpBindingオブジェクトのいくつかのプロパティをコードで変更することもできます.
問題2:上記の問題を解決した後にまた新しい問題が現れて、サービス側でデータを取得することができて、しかしクライアントに着いていつも空で、それからテストデータを準備して、サービス側で1つのint型の変数だけをあげて、クライアントは取得して、しかしいったん自分の自己定義のクラスに変えて、クライアントは取得できません
解決:サービス側とクライアントにカスタムクラス、コードは同じで、また2つのクラスのネーミングスペースが一致することを保証します.
サービス
[DataContract(Namespace = "Rostering.BO")]
    [Serializable]
    public class NewAttendancePlan
    {
        [DataMember]
        public int AttendancePlan_Id { get; set; }
    }

クライアントと同じ:
[DataContract(Namespace = "Rostering.BO")]
    [Serializable]
    public class NewAttendancePlan
    {
        [DataMember]
        public int AttendancePlan_Id { get; set; }
    }

OK~~結果は予想通り!!
それから検収する时また1つの问题が现れました:クライアントはやはりサービス端のデータを得ることができなくて、本当にどこの问题なのか分かりません.プログラムも动いたことがありません.通信が失敗し、、、、???