代码之家  ›  专栏  ›  技术社区  ›  Andy Rose

无法反映方法“XYZ”

  •  8
  • Andy Rose  · 技术社区  · 18 年前

    我们已经使用了第三方web服务,正在尝试从ASP.NET web应用程序调用它。

    无法反映方法“ABC.XYZ”。 System.InvalidOperationException: ---&燃气轮机;System.InvalidOperationException:命名空间中的XML元素“MyDoc” ' http://mysoftware.com/ns “参考资料 方法和类型。改变 WebMethodAttribute或更改 XmlRootAttribute。

    有人能澄清这个异常的可能原因吗?我能做些什么来纠正这个问题吗?或者我应该去找web服务所有者来纠正吗?

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

    9 回复  |  直到 18 年前
        1
  •  14
  •   kdanylo    14 年前

    今天早些时候我遇到了同样的问题。 原因是-由Visual Studio生成并作为参数传递到其中一个方法的类没有默认的无参数构造函数。一旦我添加了它,错误就消失了。

        2
  •  3
  •   Andy Rose    17 年前

    问题似乎在于VS和用Java编写的web服务之间的数据类型问题。

    最终,通过手动编辑VS创建的类和模式文件,它得到了修复。

        3
  •  2
  •   Dean    18 年前

    我在使用第三方web服务时遇到了完全相同的问题。此实例中的问题是,引用文件中的MustUnderstand属性查找布尔值,而namespace属性则查找字符串。

    通过查看引用,我能够识别出有问题的属性,并简单地向方法签名添加“覆盖”。

    不太理想,因为任何时候你更新服务,你必须这样做,但我找不到任何其他方法来解决这个问题。

    希望这有帮助

        4
  •  1
  •   Richard    18 年前

    如何创建代理类?

        5
  •  1
  •   Tod Flak    14 年前

    在我的例子中,由于在方法返回的类中,我未能公开一个默认的无参数构造函数,所以我得到了一个“method cannot be reflect”错误。

    我在VB.NET中工作。在我的返回类中,我声明了一个“New(…)”方法,该方法使用了几个参数(因为我希望在代码中使用它)。但通过这样做,我抑制了VB在幕后添加的默认(隐藏)无参数New()构造函数。显然,web服务处理程序要求无参数构造函数可用。我在类中添加了一个无参数的New()构造函数后,一切都很好。

        6
  •  0
  •   Gerrie Schenck    17 年前

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

        7
  •  0
  •   Has AlTaiar    13 年前

    我也有同样的问题,但我发现 WebMethod 参数具有类型为的成员 interface 这就是为什么 VS 无法序列化它。以下是尝试下载时出现的异常 disco

    System.InvalidOperationException:无法序列化成员 'Leopard.JobDispatchParameters.SendingUser' 类型为“Leopard.Interfaces.IUser”,有关详细信息,请参阅内部异常 Leopard.JobDispatchParameters.SendingUser 类型为Leopard.Interfaces.IUser,因为它是一个接口。

        8
  •  0
  •   Qazi    11 年前

        9
  •  0
  •   justAlex    10 年前

    发生此错误的另一种情况是:在代码合并期间,我的web服务中有另一个同名(但参数不同)的web方法。在我删除了旧方法后,它起了作用。