c# - C# NetTcpBinding 来自其他配置文件的客户端绑定
问题描述
我有一个客户端,它是一个名为 Windows.exe 的 Windows 应用程序。我有一个名为 ServiceFacade.dll 的 C# 类库,它有一个名为 ServiceFacade.dll.config 的配置文件。在 ServiceFacade.dll.config 中,我有如下客户端绑定
<system.serviceModel>
<client>
<endpoint address="net.tcp://localhost:5000/MyService"
binding="netTcpBinding"
contract="IMyService"
name="NetTcpBinding_MyService"/>
</client>
</system.serviceModel>
在 ServiceFacade.dll 中,我有如下代码来创建代理
NetTcpBinding binding = new NetTcpBinding("NetTcpBinding_MyService");
ChannelFactory<IMyService> chn = new ChannelFactory<IMyService>(binding);
IMyService service = chn.CreateChannel();
Windows.exe 调用 ServiceFacade.dll 来进行服务调用。
但下面一行是在 Windows.exe.config 中寻找 NetTcpBinding_MyService 而不是 ServiceFacade.dll.config
如何在下面的行中查看 ServiceFacade.dll.config 中的 NetTcpBinding_MyService 而不是 Windows.exe.config ?
NetTcpBinding 绑定 = new NetTcpBinding("NetTcpBinding_MyService");
解决方案
您绝对可以将配置复制ServiceFacade.dll.config
到Windows.exe.config
. 我宁愿手动创建服务端点,也不愿在使用 ChannelFactory 调用服务时复制配置。
客户端。
class Program
{
static void Main(string[] args)
{
Uri uri = new Uri("https://vabqia969vm:21011/");
NetTcpBinding binding = new NetTcpBinding();
binding.OpenTimeout = new TimeSpan(0, 10, 0);
binding.MaxReceivedMessageSize = 2147483647;
binding.ReaderQuotas.MaxStringContentLength = 2147483647;
ChannelFactory<ITestService> factory = new ChannelFactory<ITestService>(binding, new EndpointAddress(uri));
ITestService service = factory.CreateChannel();
var result1 = service.GetData(34);
Console.WriteLine(result1);
}
}
//The service contract is shared between the client-side and the server-side.
[ServiceContract]
public interface ITestService
{
[OperationContract]
string GetData(int id);
}
希望对你有用。
推荐阅读
- java - 即使从 github 复制了他们的代码,我也不知道这对 youtube 人和我来说是如何工作的
- google-cloud-firestore - 如何将单选按钮值保存到 Firebase Cloud Firestore
- ruby-on-rails - 除非重新加载页面,否则 Rails 应用程序邮件程序无法获取参数值
- django - (DRF) 当 unique=True 时,为什么在创建之前进行查询?
- url-scheme - 如何从网页链接到特定的微信小程序?
- javascript - 如何将 polyfill 添加到库中?
- python - 生成具有数字范围的条件组合的数据框
- c# - 列表