gpt4 book ai didi

WCF:Svcutil 生成无效的客户端代理、Apache AXIS Web 服务、重载操作

转载 作者:行者123 更新时间:2023-12-04 17:42:24 24 4
gpt4 key购买 nike

我正在使用用 Java 编写的第 3 方 Web 服务并使用 Apache Axis 1.3。该服务有许多重载操作。当 WCF Svcutil 生成代理时,它会通过在操作名称后附加一个数字来重命名重载操作。例如:

getDataResponse getData(getDataRequest request);

getDataResponse1 getData1(getDataRequest1 request);

这本身不是问题,但是当 Svcutil 生成请求/响应消息时,它会忽略更改 MessageContracts 的 WrapperName 属性。
    [MessageContractAttribute(
WrapperName = "getData",
WrapperNamespace = "http://namespace.com",
IsWrapped = true)]
public partial class getDataRequest1 { .. }

当客户端应用程序尝试打开代理时,会抛出以下异常:

InvalidOperationException: RPC Message getDataRequest1 in operation getData1 has an invalid body name getData. It must be getData1



如果我更改 WrapperName = "getData1"代理将打开,但是......
  • 我无法调用该操作,因为服务无法识别“getData1”
  • 该服务有近 1100 次操作,其中近一半是重载

  • 有没有办法生成和/或修改代理,以便所有操作都与 WCF 一起工作?

    标记

    最佳答案

    对于它的值(value)(4 年后),似乎通过调用 WSDL.exe手动传递 /protocol:SOAP参数,可以避免这个问题。对于 Apache Axis 生成的服务,从 VS2012 开始,通过 UI 生成服务客户端似乎仍然会导致此问题。

    示例用法:

    c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\NETFX 4.0 Tools>wsdl /l:cs /protocol:SOAP http://rxnav.nlm.nih.gov/RxNormDBService.xml /out:c:\drop\rxnavapi.cs

    编辑: sphinxxx正确指出 SOAP 协议(protocol)选项在 UI 中显示为“ Add Web Reference”,因此执行 wsdl.exe直接不需要。

    关于WCF:Svcutil 生成无效的客户端代理、Apache AXIS Web 服务、重载操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/799365/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com