1

IEndpointBehavior実装を介してConnectionOrientedTransportBindingElement (例:ConnectionBufferSize)のプロパティの値を変更することは可能ですか?

var host = new ServiceHost(typoef(ISomeService), new Uri(service));
var endpoint = host.AddServiceEndpoint(typeof (ISomeService), new NetTcpBinding(), string.Empty);
endpoint.Behaviors.Add(new MyCustomEndpointBehavior());
// ...

class MyCustomEndpointBehavior : IEndpointBehavior {
    // ....
    public void AddBindingParameters(ServiceEndpoint endpoint, BindingParameterCollection bindingParameters) {
         // what to do here?
    }
}
4

1 に答える 1

2

ビヘイビアーを使用してバインディング内部を変更することはできません。構成またはコードを介してカスタムバインディングを構築する必要があります

 <customBinding>
  <binding name="MyCustomBinding">
   <binaryMessageEncoding />
   <tcpTransport connectionBufferSize="256192" maxOutputDelay="00:00:30" transferMode="Streamed">
   </tcpTransport>
  </binding>
 </customBinding>

またはコード

var host = new ServiceHost(typeof(Service1), new Uri("net.tcp://someservice"));

            //binding stack - order matters!
            var myCustomNetTcpBindingStack = new List<BindingElement>();

            //session - if reliable
            var session = new ReliableSessionBindingElement();
            myCustomNetTcpBindingStack.Add(session);

            //transaction flow
            myCustomNetTcpBindingStack.Add(new TransactionFlowBindingElement(TransactionProtocol.OleTransactions));


            //encoding
            myCustomNetTcpBindingStack.Add(new BinaryMessageEncodingBindingElement());

            //security
            //var security = SecurityBindingElement.CreateUserNameOverTransportBindingElement();
            //myCustomNetTcpBindingStack.Add(security);

            //transport
            var transport = new TcpTransportBindingElement();
            transport.ConnectionBufferSize = 64 * 1024;
            myCustomNetTcpBindingStack.Add(transport);


            var myCustomNetTcpBinding = new CustomBinding(myCustomNetTcpBindingStack);

            host.AddServiceEndpoint(typeof(IService1), myCustomNetTcpBinding, string.Empty);

            host.Open();

ConnectionBufferSizeに関する良い投稿はこちら

于 2012-04-26T03:46:46.867 に答える