Web Services 向.NET Core项目添加Web服务时出错

xzv2uavs  于 12个月前  发布在  .NET
关注(0)|答案(1)|浏览(218)

我有一个.NET Core 3.1项目,我需要向其中添加一个Web服务。我可以定期将其添加为服务引用,但它不起作用,返回“There was no endpoint listening at“xxx”that could accept the message. This is often caused by an incorrect address or SOAP action”.
现在,服务已经启动并运行,连接经过三次检查,完全正常。我已经制作了一个.NET Framework 4.5应用程序,以模拟Core应用程序的工作,当我将其作为服务引用添加时,它返回相同的错误。
然而,当我将其作为Web参考(基于FW 2.0生成代码)添加时,它可以正常工作。(该选项在Core中不可用,至少据我所知不可用)
有没有办法在.NET Core中模拟生成基于2.0的代码,我试过使用dotnet-svcutil(没有额外的配置,只是基本的安装),但仍然没有awail。
有什么需要帮忙的吗?

nhaq1z21

nhaq1z211#

  • 仔细检查服务引用配置中的端点地址和绑定是否正确。URL或合约名称中的小错误可能会导致这些连接问题。
  • 尝试更新服务引用以使用basicHttpBinding而不是默认的wsHttpBinding。基本绑定更具互操作性,并且可以更好地从.NET Core连接。
  • 使用svcutilwsdl.exe等工具生成服务代理代码,而不是添加服务引用。它可以让您更好地控制绑定配置。您可以在此处指定basicHttpBinding。
  • 对于svcutil,使用**/serviceContract**选项显式指定接口命名空间和类名。如果您控制合约命名,生成的代码可能会更好地工作。
  • 作为最后的手段,如果可能的话,尝试在IIS中托管Web服务,而不是自托管。IIS托管的服务在某些情况下与**.NET Core**配合得更好。
  • 检查您在服务实现上使用的SOAP库的.NET Core兼容性。一些较旧的库(如ASMX)对.NET Core有限制。关键是在客户端代理代码和实际服务之间获得绑定、协定名称和命名空间Map的正确组合。通过反复试验,您应该能够找到一种生成方法,为您的方案创建兼容的代码。

相关问题