防止对象成员出现在Web服务的占位符中

时间:2013-09-03 12:44:06

标签: c# asmx

我正在编写一个Web服务并且已经传递了一个显示为

的对象
      <OfferDetail>
        <OfferID>long</OfferID>
        <InterestID>long</InterestID>
        <RangeValue>string</RangeValue>
        <Score>string</Score>
        <Importance>string</Importance>
        <Range>string</Range>
        <ImportanceByOtherUser>string</ImportanceByOtherUser>
        <RangeByOtherUser>string</RangeByOtherUser>
      </OfferDetail>

在Web服务占位符中,但我不想要

 <ImportanceByOtherUser>string</ImportanceByOtherUser>
 <RangeByOtherUser>string</RangeByOtherUser>

有位置持有人。 注意:我无法从对象中删除它们

4 个答案:

答案 0 :(得分:0)

如果您正在使用WCF,那么您可能已将DataContractAttribute应用于您通过该服务返回其数据的对象。如果这是一个服务定义(我怀疑,但你没有发布任何C#代码),那么你将想要摆脱装饰这些属性的OperationContractAttribute。但我相信它是后者而不是前者 - 所以我首先要寻找DataContractAttribute

HTH。

答案 1 :(得分:0)

只是想知道为什么?

此成员是内部Web服务使用还是私有数据?我有时看到一些开发人员通过Web服务直接发布ORM对象。虽然它可能有效,但这通常是一个坏主意,因为你不想暴露整个对象,而只是暴露对象的一个​​子集,甚至是几个对象的组合(例如客户的主要细节+月份的最后订单)

因此,我强烈建议您重构代码。您应该创建一些专用于Web服务的数据输出的DTO对象,以及用于输入的命令对象。

您指定无法更改对象,但添加其他图层呢?

答案 2 :(得分:0)

您使用的是哪种类型的网络服务?根据此情况,您可以使用XmlIgnoreNonSerializedIgnoreDataMember等属性。

Question 1

Question 2

答案 3 :(得分:0)

这是一个已知的错误。

http://archive.msdn.microsoft.com/WsdlHelpGenerator/Release/ProjectReleases.aspx?ReleaseId=412

下载该文件并在网络配置中添加以下内容

    <webServices>
 <wsdlHelpGenerator href="CustomWsdlHelpGenerator.aspx"/>
</webServices>

Href应指向项目中下载的文件