Как я могу написать конечную точку программно (netPeerTcpBinding)
Мне нужно написать этот конец proint программно в C#, это для приложения чата.
часть app.config
<system.serviceModel>
<client>
<endpoint name="ChatEndPoint" address="net.p2p://chatMesh/ChatServer" binding="netPeerTcpBinding" bindingConfiguration="PeerTcpConfig" contract="Test.IChatService"></endpoint>
</client>
<bindings>
<netPeerTcpBinding>
<binding name="PeerTcpConfig" port="0">
<security mode="None"></security>
<resolver mode="Custom">
<custom address="net.tcp://192.168.0.147:22222/ChatServer" binding="netTcpBinding" bindingConfiguration="TcpConfig"></custom>
</resolver>
</binding>
<!--<binding name="BindingDefault" port="0">
<security mode="None"></security>
<resolver mode="Auto"></resolver>
</binding>-->
</netPeerTcpBinding>
<netTcpBinding>
<binding name="TcpConfig">
<security mode="None"></security>
</binding>
</netTcpBinding>
</bindings>
</system.serviceModel>
C#
часть
InstanceContext context = new InstanceContext(
new Home(txtUserName.Text.Trim()));
factory =
new DuplexChannelFactory<IChatChannel>(context, "ChatEndPoint");
channel = factory.CreateChannel();
Это работает нормально для меня. Однако мне нужно динамически изменить адрес конечной точки. Ищете ценную поддержку.
1 ответ
Создайте свой собственный ChanelFactory с логикой выбора конечной точки
https://msdn.microsoft.com/en-us/library/ms734681.aspx.
Или просто используйте другой конструктор DuplexChanelFactory, который принимает объект EndPointAddress, который вы можете создать в коде со всеми необходимыми параметрами
https://msdn.microsoft.com/ru-ru/library/ms576164(v=vs.110).aspx