需要帮助控制数据合同wcf

时间:2012-09-05 16:39:06

标签: .net wcf wcf-data-services

我正在使用WCF并希望控制我的服务输出。这是我的课程:

[DataContract]
public class Authenticate
{
[DataMember(order=1)]
public int result;
[DataMember(order=0)]
Public string message;
}

[Operation Contract]
public interface IService1
{
Authenticate Login(string UName,string Password);
}

public class Service1:IService1
{
public Authenticate Login(string UName,string Password)
{
Authenticate result=new Authenticate();
if(UName=="mohit" && Password=="mohit")
{
result.result=1;
result.message="success";
}
else
{
result.result=0;
result.message="failure";

}
return result;
}
}

此方法的输出XML(忽略元数据标记)是

<LoginResponse>
<LoginRsult>
<a:message>success</a:message>
<a:result>1</a:result>
</LoginRsult>
</LoginResponse>

我想要的输出是:

<authenticate>
<result>1</result>
<message>success</message>
</authenticate>

我尝试在Datamember中设置无效的名称。

无论我在数据库中设置顺序,消息标记总是出现在结果之前(看起来像字母顺序)。

1 个答案:

答案 0 :(得分:1)

在您的示例中,您明确设置了DataMember s的顺序:

[DataContract]
public class Authenticate
{
    [DataMember(order=1)]
    public int result;
    [DataMember(order=0)]
    Public string message;
}

它从最低到最高顺序排列,因此您已经明确定义了输出的顺序,就像它实际发生的那样。如果您希望结果首先出现,则消息第二个反转order

的值
[DataContract]
public class Authenticate
{
    [DataMember(order=0)]
    public int result;
    [DataMember(order=1)]
    Public string message;
}