【问题标题】:WCF WebService with warnings and InvalidOperationException带有警告和 InvalidOperationException 的 WCF WebService
【发布时间】:2021-08-10 21:36:15
【问题描述】:

我目前正在尝试将我的 ASP-NET Core 2 应用程序连接到 Magento 的 API (WSDL v2),但不断收到以下错误:
*不管我调用哪种方法,即使是 new PortTypeClient().loginAsync(username, password); 也会抛出它,使用这个随机端点名称 salesOrderShipmentAddComment

InvalidOperationException:操作 无法加载“salesOrderShipmentAddComment”,因为它 在 \"literal\" 模式下指定 \"rpc-style\",但使用消息协定 类型或 System.ServiceModel.Channels.Message。这个组合是 不允许 - 为样式或使用参数指定不同的值 除了消息合同类型或 System.ServiceModel.Channels.Message。

但是,使用 SoapUI、邮递员或使用框架 4.6 导入,它可以完美运行。 使用 Magento v1 API 也可以,但我不想使用这个版本。

在 asp-net core 中导入期间,我也收到了这些警告(导入 v1 不会显示任何警告):

我几乎要创建一个新的 4.6 应用程序,单独托管它以充当我的应用程序和 Magento 之间的桥梁,即使它会损害我的性能和架构。

这就是我进行导入的方式: *Obs:在Data Type Options,我也尝试检查不同的选项,并选择其他数据类型。

任何事情都会有帮助...
提前致谢

【问题讨论】:

  • 在 Linux、sotnet、svcutil 和最新的 .NET Core 上也是如此。你找到解决办法了吗?
  • 不是一个好的解决方案,@nielo... 我创建了一个 4.6 .Net 应用程序作为抽象层,从 WSDL 读取 XML,并返回 JSON。
  • 所以你确认这在 2.1 中没有修复?
  • 无法确认...我可以稍后再试,希望它有效。升级对您有用吗?
  • 更新本身有效,但几个月前。 WCF 确实抛出了上述异常:/

标签: c# wcf magento asp.net-core


【解决方案1】:

我遇到了同样的问题。确保将 Nuget 包更新到 4.5.3。之后,对我来说可以正常工作。

【讨论】:

  • 哪个包应该是 4.5.3?已经制定了解决方法(另一个 .Net 4.6 API 进行通信),但知道如何解决这个问题总是好的。
  • 我认为 Chris 的意思是 System.ServiceModel 包。我正在使用这些软件包的 4.5.3 版,但仍然出现错误。你解决了布鲁诺的问题吗?我真的不想调用.NET框架类库!
  • 我在新的 netcoreapp2.2 项目中遇到了这个错误,并通过将 nuget 包(System.ServiceModel.*)从 4.4.0 更新到 4.5.3 解决了这个错误
【解决方案2】:

确实将以下软件包更新到版本 4.5.3 似乎可以解决问题:

System.ServiceModel.Duplex

System.ServiceModel.Http

System.ServiceModel.NetTcp

System.ServiceModel.Security

似乎默认安装了这些软件包的 4.4.4 版本,同时通过 VS 2017 15.9.4 UI 添加 WCF 服务引用

【讨论】:

    【解决方案3】:

    只需将 System.ServiceModel.Http 更新到 4.5.3

    【讨论】:

      【解决方案4】:

      根据 https://ozguradem.net/english/coding/2018/11/06/soap-services-with-dotnet-core/

      打开 .csproj 文件并编辑以下软件包的最低版本,例如这些

       <ItemGroup>
             <PackageReference Include="System.ServiceModel.Duplex" Version="4.5.*" />
             <PackageReference Include="System.ServiceModel.Http" Version="4.5.*" />
             <PackageReference Include="System.ServiceModel.NetTcp" Version="4.5.*" />
             <PackageReference Include="System.ServiceModel.Security" Version="4.5.*" />
         </ItemGroup>
      

      【讨论】:

        猜你喜欢
        • 2016-07-05
        • 2019-01-03
        • 2021-06-11
        • 2012-09-04
        • 1970-01-01
        • 2021-11-04
        • 1970-01-01
        • 2015-02-21
        • 1970-01-01
        相关资源
        最近更新 更多