有没有办法让客户端连接到现有的 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?的主要内容,如果未能解决你的问题,请参考以下文章