这是一个命名空间问题吗?

时间:2010-09-27 06:32:43

标签: c# .net asp.net web-services soap

我在使用非常基本的Web服务开发时遇到了一种奇怪的行为。这个问题可能是愚蠢的,但我认为有人能够解释这一观察结果。

我正在使用Web方法MyWebMethod开发Web服务

MyWebMethod(MyEnum Param, .....)

其中,

public enum MyEnum : int
    {
       Type_1 =1;
       Type_2 =2;
       Type_3 =3;
    }

现在我正在使用我的客户端与此服务进行通信,但对于每种请求类型,Type_1,Type_2等服务都会将其捕获为Type_1。例如,如果我在Web服务中的MyWebMethod上创建了一个断点,我将Type_1视为param1类型。我猜这是Namespacing的一个问题。我在代码上看不到任何其他缺陷。任何基于经验的想法?

3 个答案:

答案 0 :(得分:2)

当enum被序列化时,只有它的字符串表示通过wire(名称)传输,而不是值。我相信这就是你得到错误价值的原因。

查看这2篇文章了解更多信息

  1. WebServices_and_Enums
  2. Using enum in web service parameter

答案 1 :(得分:0)

如果这是一个WCF Web服务和一个用wsdl.exe为方法签名中的每个值类型生成的.NET 2.0客户端,则会添加一个名为XXXSpecified的布尔参数,您需要将其设置为true。有关详细信息,请查看此blog post

答案 2 :(得分:0)

我猜你的枚举不需要从int继承。您在枚举中提供名称和值,这应该足够了。我假设您的所有代码都是.NET 2.0。作为测试,从Web服务返回枚举值。只是为了确保XML序列化在浏览器直接命中服务时按预期工作。