首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >修改WCF服务,使其与.NET框架和.NET核心调用者兼容

修改WCF服务,使其与.NET框架和.NET核心调用者兼容
EN

Stack Overflow用户
提问于 2019-06-05 14:35:22
回答 1查看 935关注 0票数 2

TL;DR I有一个现有的WCF服务,托管为Windows,我想对其进行修改,以便现有的.NET Framework4.7应用程序和一个新的.NET Core2.2应用程序都可以调用它。解决这个问题最简单的方法是什么?

完整解释:我有一个现有的Web (称为'A'),运行在.NET Framework4.7上。它还在.NET 4.7上与现有的WCF服务'B‘( Windows )进行对话。他们通过NetTcpBinding进行通信。

我正在.NET核心2.2上构建一个新的Web 'C‘。我需要它与现有的服务B对话。我可以根据需要修改A和B,但时间和金钱是有限的。另外,B使用了一个只运行在.NET框架上的API,因此它可以将而不是转换为在.NET核心上运行,这让我非常沮丧。

B服务很小。它的全部暴露合同是5种方法。安全真的很小。这是一家小公司的内部网应用程序。

什么是最快,最简单的方式来修改现有的WCF服务B(和A,如果需要),以便它可以同时与应用程序A和C?

我猜我应该只在应用程序A和B上使用更改WCF绑定,这样我就可以很容易地在C上使用HttpClient;如果是,那是哪一种绑定,以及如何使用HttpClient与其接口?另外,将WCF绑定从NetTcpBinding更改为其他会咬我的东西有什么隐藏的“陷阱”吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-06 07:49:40

是的,考虑到Core与WS绑定不兼容,我们可以使用Basichttpbinding和WebHttpBinding发布服务。

使用basichttpbinding创建服务很简单,只需用下面的代码片段替换System.servicemodel部分即可。

代码语言:javascript
运行
复制
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <protocolMapping>
        <add binding="basicHttpBinding" scheme="http" />
    </protocolMapping>    
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

然后,我们可以通过添加服务引用来调用服务。

或者我们使用Webhttpbinding发布restful样式服务,就像Asp.Net WebAPI一样。

https://learn.microsoft.com/en-us/dotnet/framework/wcf/feature-details/wcf-web-http-programming-model

然后,我们可以通过构造带有请求体的HTTP请求GET/POST/PUT/Delete来调用服务。核心和.netframework都支持它,因为Http协议是通用的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56462686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档