我有一个 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?[])。
我真正想要的是使用简单的 int[] 和 int?[] 类型(无论我重新编译和更新服务引用多少次!)。我怎样才能做到这一点?
请您参考如下方法:
尝试使用 wsdl.exe代替使用 Visual Studio 生成 Web 服务代理的工具。
这对我有用!
