无法反映方法" XYZ"

时间:2020-03-06 14:42:56  来源:igfitidea点击:

我们已经使用了第三方Web服务,并正在尝试从ASP.NET Web应用程序调用它。
但是,当我实例化Web服务时,将引发以下System.InvalidOperationException异常:

Method 'ABC.XYZ' can not be reflected.
  System.InvalidOperationException:
  Method 'ABC.XYZ' can not be reflected.
  ---> System.InvalidOperationException: The XML element 'MyDoc' from namespace
  'http://mysoftware.com/ns' references
  a method and a type. Change the
  method's message name using
  WebMethodAttribute or change the
  type's root element using the
  XmlRootAttribute.

据我所知,Web服务中的方法和类型之间似乎有些歧义。
任何人都可以澄清此异常的可能原因,我有什么办法可以纠正此异常,还是应该只是去拜访Web服务所有者以进行纠正?

编辑:Visual Studio 2008已创建代理类。不幸的是,我无法提供wsdl的链接,因为它是本地安装的第三方应用程序的Web服务。

解决方案

我猜该服务发出或者提供的wsdl格式不是wsdl.exe或者serviceutil可以理解的形式,我们可以发布wsdl或者链接到它吗?

我们如何创建代理类?

另外,我们可能想尝试根据wsdl模式验证wsdl以检查其有效

当我使用第三方网络服务时,我遇到了完全相同的问题。在这种情况下,问题在于参考文件中的mustUndertand属性正在寻找布尔值,而namespace属性则在寻找字符串。

通过查看引用,我能够确定有问题的属性,并只需在方法签名中添加"替代"即可。

这并不理想,因为任何时候我们都必须更新服务,但是我找不到其他解决方法。

要查找参考文件,请从解决方案资源管理器中选择"所有文件"

希望这可以帮助

看来问题出在VS和用Java编写的Web服务之间的数据类型问题。

最终,它是通过手动编辑VS创建的类和架构文件来修复的。

我收到相同的消息,但我的原因是缺少System.Runtime.Serialization.dll,因为我试图在仅安装.NET 2.0的计算机上运行3.5应用程序。