在 .NET Core 中从 .NET Framework 使用 WCF 服务

Posted

技术标签:

【中文标题】在 .NET Core 中从 .NET Framework 使用 WCF 服务【英文标题】:Consume WCF service from .NET Framework in .NET Core 【发布时间】:2021-11-07 10:58:42 【问题描述】:

WCF 服务托管在使用 .NET Framework 编写的本地 VM 上。我需要在 .NET Core 应用程序中使用它。当我尝试通过 Microsoft WCF Web Service Reference Provider

连接它时

选项,我收到这样的警告消息

继续忽略此消息,我只能看到实现 async 的端点。

现在,如果我尝试调用任何异步方法,我会收到此错误。

这就是我实例化它的方式。

public class MotionSimulatorManager

public  MotionSimulatorManager()
        
            try
            
                var uri = "net.tcp://192.168.184.33:8458/MotionSimulator";

                var endpoint = new EndpointAddress(uri);

                var binding = new NetTcpBinding
                
                    SendTimeout = new TimeSpan(1, 59, 59),
                    ReceiveTimeout = new TimeSpan(1, 59, 59),
                    MaxBufferPoolSize = int.MaxValue,
                    MaxBufferSize = int.MaxValue,
                    MaxReceivedMessageSize = int.MaxValue,
                    Security =  Mode = SecurityMode.None 
                ;

                _motionSimulatorClient = new MotionSimulatorClient(binding, endpoint);

            
            catch (Exception e)
            
                Console.WriteLine(e);
                throw;
            
        




        public async Task<object> NameSake()
        
            try
            
                var res = _motionSimulatorClient.EstopAsync(); //error comes at this point.


                return res;
            
            catch (Exception e)
            
                File.WriteAllText("D://CollimatorType.txt", e.StackTrace);
                throw;
            
        


我该如何解决这个问题?如果需要任何其他详细信息,请告诉我。

提前谢谢..

编辑:

我通过添加使用 WCF 服务并创建我在其他 .NET Core 项目中使用的 .NET Framework 项目的 .NET Framework 项目来引入代理,但是在连接到它时出现此错误。

有人可以帮我吗?

【问题讨论】:

【参考方案1】:

请检查服务配置是否有正确的绑定配置,如下:

<service behaviorConfiguration="somebehavior"
         name="somename">
   <endpoint address="" binding="wsHttpBinding" 
             bindingConfiguration="SomeBinding"
             name="http" 
             contract="somecontract" />
   <endpoint address="mex" 
             binding="mexHttpBinding" 
             bindingConfiguration=""
             name="mex" 
             contract="IMetadataExchange" />
   <host>
      <baseAddresses>
         <add baseAddress="http://localhost:8700/service/"/>
      </baseAddresses>
   </host>
</service>

此绑定配置为空。然后它采用默认的 wsHttpBinding,这与指定的不同。

【讨论】:

以上是关于在 .NET Core 中从 .NET Framework 使用 WCF 服务的主要内容,如果未能解决你的问题,请参考以下文章

NET Core 3.1 MVC 授权/身份验证,带有在单独的 Net Core 3.1 Web Api 中从外部获取的令牌 (JWT)

Azure Devops - 在 Nuget 包中从 .NET Core 3.1 迁移到 .NET 5 的兼容性问题

在 .net core c# 的 ExceptionFilter 中从 ActionFilter 中捕获异常

在 ASP.Net Core 3 中从中间件设置 HTTP 身份验证标头

如何在 asp.net core v 2.0 中从 javascript 调用 PageModel 方法

在 .Net Core 2.0 中从网络摄像头捕获图像