我有一个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)
,
与ArrayOfInt
和ArrayOfInt1
交换(ArrayOfInt1
现在相当于int[]
而ArrayOfInt
相当于int?[]
。< / p>
我真正想要的是使用简单的int[]
和int?[]
类型(无论我重新编译和更新服务引用多少次!)。我怎样才能做到这一点?
答案 0 :(得分:0)
尝试使用wsdl.exe工具代替使用Visual Studio生成Web服务代理。
这项工作适合我!
答案 1 :(得分:0)
我知道这已经过时了,但我遇到了同样的问题。我的不同之处在于添加了Web引用而不是服务引用。
在VS中,执行以下操作:
我的网络参考使用int[]
参数正确添加了该方法。
编辑: Here是一个更好的答案,可以用漂亮的图片来说明!
编辑2: This answer摆脱了ArrayOfXXX
到List<XXX>
愚蠢,没有使用传统科技,就我而言是双赢的。现在,如何在工具中做到这一点?或者直接编辑文件只能 吗?