.Net Core 中的 Http 绑定使用带有 wcf 引用的库项目

Posted

技术标签:

【中文标题】.Net Core 中的 Http 绑定使用带有 wcf 引用的库项目【英文标题】:Http Bindings in .Net Core consuming a Library Project with wcf reference 【发布时间】:2021-07-29 05:11:18 【问题描述】:

我的 .net core 3.1 项目引用了一个在 .Net Framework 3.5 中构建的类库项目。 库项目有一个 wcf 服务引用,其绑定在 app.config 中定义。

在 dotnet 框架中,我们通常在消费项目中提供 http 绑定。

当我尝试在 dotnet core(使用项目)的 app.config 中手动添加服务绑定时,我收到此错误 - “无法识别的配置部分 system.serviceModel

有什么方法可以在引用库项目的项目中提供 http 绑定。

更新 1

这是我在 dotnet 核心项目中的 app.config -

   <?xml version="1.0" encoding="utf-8"?>
<configuration>
    <appSettings>
        <add key="username" value="usr"/>
        <add key="password" value="pass"/>
        <add key="logPath" value="c:\test\api_log.txt"/>    
    </appSettings>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="ListManagementSoap">
                    <security mode="Transport" />
                </binding>
                <binding name="ListManagementSoap1" />
                <binding name="ContactManagementSoap">
                    <security mode="Transport" />
                </binding>
                <binding name="ContactManagementSoap1" />
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="https://ws.caigners.com/listmanagement.asmx"
                binding="basicHttpBinding" bindingConfiguration="ListManagementSoap"
                contract="ListManagementAPI.ListManagementSoap" name="ListManagementSoap" />
            <endpoint address="https://ws.caigners.com/contactmanagement.asmx"
                binding="basicHttpBinding" bindingConfiguration="ContactManagementSoap"
                contract="ContactManagementAPI.ContactManagementSoap" name="ContactManagementSoap" />
        </client>
    </system.serviceModel>
</configuration>

【问题讨论】:

【参考方案1】:

目前.net core不支持创建WCF服务,但是可以在.net core中创建WCF客户端来调用WCF服务。虽然您可以在 .net core 中调用 WCF 服务,但它受到一些限制。 .net core 中的 WCF 客户端只支持四种绑定:BasicHttpBinding、CustomBinding、NetHttpBinding、NetTcpBinding,.net Core 中的安全特性并不多。

如果要识别system.serviceModel,需要安装System.ServiceModel.Http。有关它的更多信息,您可以参考这个link。

【讨论】:

我尝试添加“System.ServiceModel.Http”nuget 包。我仍然收到“无法识别的配置部分 system.serviceModel”错误。我已经用我的 app.config 更新了 OP。 这可能是因为 System.ServiceModel.Http 不包含 system.serviceModel 节点。我建议你使用 .net 框架。 是的,我不得不绕过它并将 dotnet 框架 3.5(WCF 消费项目)重写为核心 3.1。这是一个漫长而乏味的工作,但完成了工作。谢谢:)

以上是关于.Net Core 中的 Http 绑定使用带有 wcf 引用的库项目的主要内容,如果未能解决你的问题,请参考以下文章

.NET Core MVC - 带有前缀绑定的 AJAX POST 请求

[十二] ASP.NET Core 中的模型绑定

[十二] ASP.NET Core 中的模型绑定

带有 ASP.NET Core DI 的 MediatR

带有 SignalR 集线器的 ASP.NET Core 中的范围服务

如何在 Asp.Net Core 中为日期绑定设置文化?