有没有办法让客户端连接到现有的 WCF Web Http 服务而不使用 .Net Core 2 中的 WebHttpBinding?

Posted

技术标签:

【中文标题】有没有办法让客户端连接到现有的 WCF Web Http 服务而不使用 .Net Core 2 中的 WebHttpBinding?【英文标题】:Is there any way to have a client connect to an existing WCF Web Http Service without using WebHttpBinding in .Net Core 2? 【发布时间】:2020-07-16 06:05:30 【问题描述】:

一般来说,我是 WCF 的新手,所以请原谅问题中的任何不一致之处。

我正在尝试连接到现有的 WCF 服务。我看到的使用该服务的现有 WCF 服务客户端已使用 WebHttpBinding 连接到 WCF 服务。但是,对于我正在制作的新客户端,我无法使用 .NET 框架,需要使用不支持 WebHttpBinding 的 .NET 核心(我尝试为 System.ServiceModel.Web 安装 nuget 包,它说目标必须是 .Net 框架 - 看起来与可能支持此相关的 GitHub 没有采取任何行动这样做https://github.com/dotnet/wcf/issues/1413)。无论如何使用普通的 HTTP 请求连接到现有的 WCF 服务器?或者如果没有,通过使用 WCF 框架内的其他方式?

我看过What replaces WCF in .Net Core?,但它似乎建议完全使用不同的框架。

【问题讨论】:

【参考方案1】:

你是对的,我们可以通过某些HttpClient类库来连接现有的WCF服务器。 Webhttpbinding创建的WCF服务称为WCF Rest服务。https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/wcf-web-http-programming-model-overview 使用代理调用Rest服务不是一个好的选择,这样调用SOAP风格的服务更合适。https://docs.microsoft.com/en-us/dotnet/framework/wcf/wcf-client-overview 使用ajax构造Http请求,HttpClient(C#),HttpClientFactory(Core)是调用webhttpbinding创建的WCF服务的好方法。指定 Http 动词并附加请求正文,然后将请求发送到服务 URL,这就是我们需要做的所有事情。 目前DotNet Core不支持Webhttpbinding。https://docs.microsoft.com/en-us/dotnet/api/system.servicemodel.webhttpbinding?view=netframework-4.8 如果有什么我可以帮忙的,请随时告诉我。

【讨论】:

以上是关于有没有办法让客户端连接到现有的 WCF Web Http 服务而不使用 .Net Core 2 中的 WebHttpBinding?的主要内容,如果未能解决你的问题,请参考以下文章

尝试将 ASP.NET CORE 2 Web API 应用程序连接到 WCF 服务

VB6 连接到 WCF

使用 gSOAP 连接到 WCF Web 服务

WCF 连接到 Websocket 服务器

识别 WCF 客户端 ID

Apache ActiveMQ Artemis 客户端能否连接到现有的 ActiveMQ 代理 5.15.X?