Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASMX web服务枚举未保留其值_C#_Asp.net_Enums_.net 2.0_Asmx - Fatal编程技术网

C# ASMX web服务枚举未保留其值

C# ASMX web服务枚举未保留其值,c#,asp.net,enums,.net-2.0,asmx,C#,Asp.net,Enums,.net 2.0,Asmx,我创建了一个包含枚举的web服务,其值如下 public enum DesignChoice { DesignerChoice = 1, CustomerChoice = 2, AdditionalDesign=3, } 当我添加对客户端网站的引用时,枚举值会发生更改,如下代码所示: (int)DesignChoice.AdditionalDesign返回2,但我希望它是3 我不知从哪里尝试了序列化属性[System.Xml.serializat

我创建了一个包含枚举的web服务,其值如下

public enum DesignChoice
{            
    DesignerChoice = 1,
    CustomerChoice = 2,
    AdditionalDesign=3,
}
当我添加对客户端网站的引用时,枚举值会发生更改,如下代码所示:

(int)DesignChoice.AdditionalDesign
返回2,但我希望它是3

我不知从哪里尝试了序列化属性
[System.Xml.serialization.XmlTypeAttribute()]
,但没有成功

服务的WSDL对枚举的描述如下:

 <s:simpleType name="DesignChoice">
        <s:restriction base="s:string">
          <s:enumeration value="DesignerChoice" />
          <s:enumeration value="CustomerChoice" />
          <s:enumeration value="AdditionalDesign" />
        </s:restriction>
      </s:simpleType>

我使用的是Visual Studio 2005和.NET 2.0。

从服务发送和发送的值将是表示枚举的字符串,例如
CustomerChoice


服务中的值应该是正确的,但由于任何客户端上的数字信息可能不同,因此客户端上的值可以是任何值。只要它们返回正确的字符串值,这就不重要了。如果客户机明确依赖于编号,则可能是客户机存在设计缺陷,或者您的服务期望调用的整数,而它本应期望枚举。

从您的服务发送和发送的值将是表示枚举的字符串,例如
CustomerChoice


服务中的值应该是正确的,但由于任何客户端上的数字信息可能不同,因此客户端上的值可以是任何值。只要它们返回正确的字符串值,这就不重要了。如果客户机明确依赖于编号,则可能是客户机存在设计缺陷,或者您的服务期望调用的是整数,而它应该期望枚举。

下面是详细说明


以下是发生的详细说明


您确定调用了正确的页面吗?我做了一个快速测试,它返回了预期的3。请记住:您不应该使用Response.net。你能调试你的代码吗?是的,我进行了调试,但是值是一样的,为什么不使用Response.Write?你的代码中有其他DesignChoice实现吗?当光标位于DesignChoice上时,按F12键进入定义。看一看生成的HTML,就知道为什么不应该使用Response.Write。输出在顶部。我想你也有一个.aspx页面(?)听起来你有一个旧版本,或者类似的东西。你确定你调用了正确的页面吗?我做了一个快速测试,它返回了预期的3。请记住:您不应该使用Response.net。你能调试你的代码吗?是的,我进行了调试,但是值是一样的,为什么不使用Response.Write?你的代码中有其他DesignChoice实现吗?当光标位于DesignChoice上时,按F12键进入定义。看一看生成的HTML,就知道为什么不应该使用Response.Write。输出在顶部。我假设你也有一个.aspx页面(?)听起来像你有一个旧版本,或者类似的东西。但是在这个特定的情况下我们需要数值,但在这个特定的情况下我们需要数值
public enum DesignChoice
    {
        DesignerChoice = 0,
        CustomerChoice = 1,
        AdditionalDesign = 2,
    }