0


0

WCFエンドポイントバインディング設定が更新されない

WCFセルフホストサービスエンドポイントの構成設定を変更しようとすると、すべて失敗します。

public void Start()
    {
        BasicHttpBinding binding = new BasicHttpBinding();
        binding.Name = "NAVBinding";
//--------------------START editing-------------------------------
        TimeSpan interval = new TimeSpan(1, 50, 00); // all these following (inbetween comments) lines have no effect
        binding.MaxReceivedMessageSize = 2147483647;
        binding.MaxBufferSize = 2147483647;
        binding.ReceiveTimeout = interval;
        binding.OpenTimeout = interval;
        binding.CloseTimeout = interval;
        binding.SendTimeout = interval;
        XmlDictionaryReaderQuotas readerQuotas = new XmlDictionaryReaderQuotas();
        readerQuotas.MaxDepth = 2147483647;
        readerQuotas.MaxStringContentLength = 2147483647;
        readerQuotas.MaxArrayLength = 2147483647;
        readerQuotas.MaxBytesPerRead = 2147483647;
        readerQuotas.MaxNameTableCharCount = 2147483647;
        binding.ReaderQuotas = readerQuotas;
//----------------------END editing---------------------------
        binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
        Uri baseAddress = new Uri("http://localhost:8000/nav/customer");
        Customer_Service service = new Customer_Service();
        serviceHost = new ServiceHost(service, baseAddress);
        serviceHost.AddServiceEndpoint(typeof(ICustomer_Service), binding, baseAddress);
        OpenMetadataExchange(baseAddress);
        service.navEventListner = this;
        serviceHost.Open();

    }

しかし、* wcfStorm *アプリケーションの助けを借りて、 `MaxReceivedMessageSize`プロパティを簡単に変更できます。この場合、実際に変更されます。 ただし、サービスを再起動すると、すべてがデフォルト設定に戻ります(たとえば、MaxReceivedMessageSize = 65536)。

どうか、私は何をしているのですか? 新しい値が更新されるようにコードを編集する方法は?

1 Answer


1


  • SERVER SIDE でこれらの値を設定しても、 CLIENT SIDE *で自動的に設定されるわけではありません。

サーバー側でそれらを設定するだけでは十分ではありません。クライアントとサーバー間の転送は、クライアントとサーバー間の2つの設定のうち最小のものによって決定されます。 サーバーが2 GBのメッセージサイズを許可している場合でも、クライアントがまだ64 KBを要求している場合は、小さい方の64 KBの値が優先されます。 これは、サーバー側の2 GBの設定が存在しないことを意味するものではありません-存在しますが、クライアントがより小さい設定を使用するため、効果的ではありません。

クライアント側で同じ設定を使用する場合は、それに応じてクライアント側を構成する必要があります。 クライアントプロキシを作成するときに同じことを行うか、app.configファイルからクライアントを構成する必要があります。