.net ASMXWeb服务响应中XML元素的顺序随构建它的PC而变化
在ASMX web服务中,GetProductListModulesOnPage方法返回ProductListModule对象的列表。ProductListModule类来自两个来源:.net ASMXWeb服务响应中XML元素的顺序随构建它的PC而变化,.net,web-services,entity-framework-4,.net-4.0,asmx,.net,Web Services,Entity Framework 4,.net 4.0,Asmx,在ASMX web服务中,GetProductListModulesOnPage方法返回ProductListModule对象的列表。ProductListModule类来自两个来源: 实体框架4实体(使用POCO模板生成) 添加单个额外属性的分部类声明,如下所示: 公共部分类ProductListModule{ 公共布尔值未激活{get;set;} } 问题在于,IsNotActivated元素在web服务响应中的位置根据构建项目的机器的不同而不同。在同事的电脑上,它显示在最上方,而在我的电脑
公共部分类ProductListModule{
公共布尔值未激活{get;set;}
}
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<GetProductListModulesOnPageResponse xmlns="http://ecommerce.company.co.uk/">
<GetProductListModulesOnPageResult>
<ProductListModule>
<ListPageTabID>364</ListPageTabID>
<ListPageModuleID>872</ListPageModuleID>
<ListPageCategoryID>107</ListPageCategoryID>
<ProductCategory>
<CategoryID>107</CategoryID>
<CategoryName>Buff</CategoryName>
<ParentCategoryID>343</ParentCategoryID>
<Archived>false</Archived>
</ProductCategory>
<IsNotActivated>false</IsNotActivated>
</ProductListModule>
</GetProductListModulesOnPageResult>
<Success>true</Success>
<Message />
</GetProductListModulesOnPageResponse>
</soap:Body>
</soap:Envelope>
364
872
107
107
浅黄色
343
错误的
错误的
符合事实的
如果位置更改(并且服务引用未刷新),则web服务客户端
无法解释响应并引发异常
我们看不出进行构建的机器之间有什么不同(相同的VS版本,相同的EF版本),我们都使用完全相同的源代码
我们还尝试通过向IsNotActivated属性添加以下属性来控制序列化顺序,但没有效果
[System.Runtime.Serialization.DataMemberAttribute(IsRequired=true,Order=1)]
PS-建议转换为WCF没有意义 根据,将[DataMember(Order=1)]
放在分部类上实际上可能会将其移动到EF内容之后。没有顺序的成员将按字母顺序排在第一位。