首页 > 解决方案 > .Net Core 3.1 可以针对 WCF tcp mex 创建连接的客户端吗?

问题描述

从 .Net Framework 迁移到 .Net Core 3.1 并且需要转换 WCF tcp/mex 客户端。我创建客户端的尝试导致:“未找到与 .Net 核心应用程序兼容的端点”。Visual Studio 2019 生成连接客户端的工具标题为:“Microsoft WCF Web Service Reference Provider”。这让我想知道该工具是否仅适用于 web http/wsdl 端点并且不适用于 tcp/mex?

另一个线索是生成导致“警告:无法导入 wsdl 绑定”。这是有道理的,因为“定义语言”是mex。(PS 如果我在 Visual Studio 2017 中使用 .Net Framework 针对同一个端点创建客户端,它工作得很好,所以端点是有效的。)

即使 .Net Core 最终将与 tcp/mex 一起使用,我也需要确定这是否值得努力,还是我应该硬着头皮转换为 gRPC?

标签: c#wcf.net-core

解决方案


“Microsoft WCF Web Service Reference Provider”支持tcp/mex,需要在代码中添加mex端点。

               selfHost.AddServiceEndpoint(typeof(ICalculator), new NetTcpBinding(), "CalculatorService");

                // Step 4: Enable metadata exchange.
                ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
               // smb.HttpGetEnabled = true;
                selfHost.Description.Behaviors.Add(smb);

                Binding mexbinding = MetadataExchangeBindings.CreateMexTcpBinding();
                selfHost.AddServiceEndpoint(typeof(IMetadataExchange), mexbinding, "mex");

服务运行成功后,“Microsoft WCF Web Service Reference Provider”可以根据URI成功生成代理类。

在此处输入图像描述


推荐阅读