在.net web服务中使用/生成方法签名,使用int[]代替ArrayOfInt

本文关键字:使用 int ArrayOfInt 代替 方法 服务 web net | 更新日期: 2023-09-27 18:06:22

我有一个ASP。. NET web服务(.asmx),其方法接收int数组(int[])和可空的int数组(int?[])作为参数。我还有一个测试web应用程序,通过一个服务引用来使用这个web服务。

问题是,每次我在web服务代码中更改某些内容,重新编译它并更新测试应用程序中的服务引用时,都会为测试应用程序中的web服务方法生成不同类型的参数。例如:

在第一次构建和服务更新时,Visual Studio在测试应用中生成的方法签名是:

void MyMethod(int[] firstParam, int?[] secondParam)

然后我做了一些改变,再做一次,得到如下内容:

void MyMethod(ArrayOfInt fistParam, ArrayOfInt1 secondParam)

(ArrayOfInt相当于int[], ArrayOfInt1相当于int?[])。

再写一次,得到:

void MyMethod(ArrayOfInt1 firstParam, ArrayOfInt secondParam)

ArrayOfIntArrayOfInt1交换(ArrayOfInt1现在相当于int[], ArrayOfInt现在相当于int?[])。



我真正想要的是使用简单的int[]int?[]类型(不管我重新编译和更新服务引用多少次!)。我怎样才能做到这一点呢?

在.net web服务中使用/生成方法签名,使用int[]代替ArrayOfInt

尝试使用wsdl.exe工具来生成web服务代理,而不是使用Visual Studio。

这个适合我!

我知道这是旧的,但我刚刚遇到了同样的问题。对我来说,区别在于添加了一个web参考而不是一个服务参考。

在VS中,执行以下操作:

  1. 右键单击,选择添加>服务引用
  2. 点击左下方高级按钮
  3. 点击左下方的添加Web引用按钮
  4. 添加URL和引用名称,然后单击添加引用

我的web参考正确地添加了int[]参数的方法。

EDIT:这里有一个更好的答案,有漂亮的图片来说明!

EDIT 2:这个答案摆脱了ArrayOfXXXList<XXX>的愚蠢不使用传统技术,所以就我而言是双赢的。现在,如何在工具中做到这一点呢?还是只有可以通过直接编辑文件来完成?