【问题标题】:Is this a namespacing problem?这是命名空间问题吗?
【发布时间】:2010-09-27 06:32:43
【问题描述】:

我在进行非常基本的 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 类型。我想这是命名空间的问题。我在代码上看不到任何其他缺陷。根据经验有什么想法吗?

【问题讨论】:

  • 绝对不是“命名空间”问题。不管是什么。
  • 发布您的client 代码可能会有所帮助..
  • 那么你期待什么呢?您是否希望它们作为 int 类型? :)

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


【解决方案1】:

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

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

  1. WebServices_and_Enums
  2. Using enum in web service parameter

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2013-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-05
        • 2016-12-04
        • 2013-03-26
        • 2016-05-14
        相关资源
        最近更新 更多