在.NET Web服务上使用/生成方法签名使用int []而不是Array Of Int

时间:2011-08-23 17:52:48

标签: c# .net asp.net web-services service-reference

我有一个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?[]。< / p>



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

2 个答案:

答案 0 :(得分:0)

尝试使用wsdl.exe工具代替使用Visual Studio生成Web服务代理。

这项工作适合我!

答案 1 :(得分:0)

我知道这已经过时了,但我遇到了同样的问题。我的不同之处在于添加了Web引用而不是服务引用。

在VS中,执行以下操作:

  1. 右键单击,选择添加&gt;服务参考
  2. 点击左下角的高级按钮
  3. 点击左下角的添加网络参考按钮
  4. 添加网址和引用名称,然后点击添加参考
  5. 我的网络参考使用int[]参数正确添加了该方法。

    编辑: Here是一个更好的答案,可以用漂亮的图片来说明!

    编辑2: This answer摆脱了ArrayOfXXXList<XXX>愚蠢没有使用传统科技,就我而言是双赢的。现在,如何在工具中做到这一点?或者直接编辑文件只能 吗?