【发布时间】:2011-11-02 04:23:40
【问题描述】:
我有一个 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?[] 类型(无论我重新编译和更新服务引用多少次!)。我怎样才能做到这一点?
【问题讨论】:
-
没人找到原因吗?没有人对这种愚蠢的行为感到恼火吗?
-
您使用的是 ASP.NET (asmx) Web 服务还是 WCF?
-
听起来你应该打开 WCF
-
我正在使用 ASP.NET,但我还不能使用 WCF(出于业务原因)。
-
傻,但是你可以通过创建自己的集合数组类并在方法中使用它作为参数来避免,编译器不会干预。
标签: c# .net asp.net web-services service-reference