Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Net Core 3.1能否针对WCF tcp mex创建已连接的客户端?_C#_Wcf_.net Core - Fatal编程技术网

C# Net Core 3.1能否针对WCF tcp mex创建已连接的客户端?

C# Net Core 3.1能否针对WCF tcp mex创建已连接的客户端?,c#,wcf,.net-core,C#,Wcf,.net Core,从.Net Framework迁移到.Net Core 3.1,需要转换WCF tcp/mex客户端。我尝试创建客户端的结果是:“未找到与.Net核心应用程序兼容的终结点”。用于生成已连接客户端的Visual Studio 2019工具的标题为:“Microsoft WCF Web服务参考提供程序”。这让我不禁要问,该工具是否只适用于web http/wsdl端点,而不适用于tcp/mex 另一个线索是生成结果是“警告:无法导入wsdl绑定”。这是有道理的,因为“定义语言”是mex。(请注意,如

从.Net Framework迁移到.Net Core 3.1,需要转换WCF tcp/mex客户端。我尝试创建客户端的结果是:“未找到与.Net核心应用程序兼容的终结点”。用于生成已连接客户端的Visual Studio 2019工具的标题为:“Microsoft WCF Web服务参考提供程序”。这让我不禁要问,该工具是否只适用于web http/wsdl端点,而不适用于tcp/mex

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

即使.Net Core最终将与tcp/mex一起工作,我也需要决定这是否值得付出努力,还是应该咬紧牙关转换为gRPC?

“Microsoft WCF Web服务参考提供商”支持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服务引用提供程序”可以基于URI成功生成代理类


我收到一位MSFT支持人员的回复,他说,虽然WCF Web服务参考提供商将导入tcp/mex元数据,但该解决方案并不完全支持消息安全性(我认为这也意味着它不支持传输消息安全性)。也许该工具正在生成“找不到与.Net核心应用程序兼容的终结点”,因为它检测到消息安全性。如果它注意到为什么找不到兼容的终结点,会更清楚,因为该终结点当前正在生产中(正如我所说的与.Net Framework一起工作)

对我来说,消息安全性比TLS安全性更重要,因为它提供了授权。也就是说,如果你没有证书,你就不能和我说话。这是一个障碍,而且当我无法在.Net Core中生成服务器组件时,这些都是交易破坏因素。消息安全性已被推出.Net 5(适用于11月发行版),因此在.Net 6之前可能不会出现


我已经有了一个gRPC原型,它的工作时间比我研究这个.Net核心问题所用的时间还短,所以我继续往下看。

请看以下内容:这是一篇5年前的文章,与.Net Framework相关,但与.Net核心无关,这是我问题的核心。为什么现在的更改会与5年前不同(添加MEX端点)?看起来除了去core,您还添加了mex。mex是否工作于Net Framework?第一个版本的.Net core于2016年发布,直到2019年发布的.Net core 3才支持任何形式的WCF通信。我没有添加mex-自2015年投入生产以来,它一直是.Net Framework服务的一部分,并且具有r完美无瑕。5年前的文章无法描述产品的功能(.Net Core 3.0)去年刚刚发布,我想迁移到它。不清楚您是否让MEX使用Net。从Core 2.0到3.0/3.1的人遇到了很多问题。这可能与其他3.0/3.1问题类似。您检查了端点值吗?是V4还是V6?我已经有一个MEX端点(已经生产了5年)。虽然WCF Web服务引用提供程序可以生成合同类,但问题在于此关键警告:“未找到与.Net核心应用程序兼容的终结点”。请参阅我的下一篇文章,即“答案”。