防止对象member出现在web服务的占位符中

本文关键字:服务 web 占位符 对象 member | 更新日期: 2023-09-27 18:29:58

我正在编写一个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>

有地方持有者。注意:我不能从对象中删除它们

防止对象member出现在web服务的占位符中

如果您使用WCF,那么您可能将DataContractAttribute应用于您通过服务返回其数据的对象。如果这是一个服务定义(我对此表示怀疑,但您没有发布任何C#代码),那么您将希望去掉装饰这些属性的OperationContractAttribute。但我相信是后者而不是前者;所以我会先找DataContractAttribute

HTH。

只是想知道为什么

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

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

您指定了不能更改对象,但添加另一个图层怎么样?

您使用的是哪种类型的Web服务?根据这一点,您可以使用XmlIgnoreNonSerializedIgnoreDataMember等属性。

参见

问题1

问题2

这是一个已知的错误。

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

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

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

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