【发布时间】:2020-04-11 12:51:22
【问题描述】:
我在 .NET Core 中创建了一个 Web API 服务(我尝试了 2.2 和 3.1)。
它是旧 WCF SOAP 服务 (.NET 4.5.2) 的桥梁,当这两个服务都在我的 Windows 10 开发机器上时它运行良好。
当 WCF 服务放置在我们的 Windows Server 2008 R2 服务器上时,我收到此错误:
"message": "响应消息的内容类型text/html;charset=UTF-8与绑定的内容类型(text/xml;charset=utf-8)不匹配。如果使用自定义编码器,请确保正确实现 IsContentTypeSupported 方法。响应的前 1024 个字节为:'
错误是我得到一个 HTML 答案而不是 XML,似乎原因是调用以某种方式更改为“迪斯科”调用。我在客户端中唯一更改的是端点地址,它不包含迪斯科参数。
我可以使用 SOAP UI 调用 WCF 服务。
我有这些对 System.ServiceModel-** 程序集的引用。
<PackageReference Include="System.Private.ServiceModel" Version="4.7.0" />
<PackageReference Include="System.ServiceModel.Duplex" Version="4.7.0" />
<PackageReference Include="System.ServiceModel.Http" Version="4.7.0" />
<PackageReference Include="System.ServiceModel.NetTcp" Version="4.7.0" />
<PackageReference Include="System.ServiceModel.Primitives" Version="4.7.0" />
<PackageReference Include="System.ServiceModel.Security" Version="4.7.0" />
什么会导致这种行为?
【问题讨论】:
-
您是如何调用WebApi项目中的WCF服务、客户端代理或通过Http类库直接播种http请求的?当服务器改成Server2008R2的时候,我想我们最好在WebAPI中添加服务引用,生成客户端代理对象来调用服务。
-
嗨,亚伯拉罕。我曾尝试在 vs2019 中生成连接服务《wcf》,来自 .net 4 的 svcutil 和 dotnet_svcutil。 /杰斯珀
-
我差点忘记您使用的是基于 AspnetCore 的 WebAPI 项目,这可能与 WCF 服务不兼容。建议您在基于 Core 的控制台项目中调用该服务一次,以测试 CoreSDK 是否与当前的 WCF 服务兼容。这是通过创建基于内核的控制台程序然后添加服务引用来生成客户端代理来完成的。然后使用代理类来调用服务。注意我们需要修改reference.cs中的默认服务地址。
标签: asp.net-core wcf asp.net-core-webapi windows-server-2008-r2