C# ASMX web服务枚举未保留其值
我创建了一个包含枚举的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
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,
}