代码之家  ›  专栏  ›  技术社区  ›  iJade

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

  •  0
  • iJade  · 技术社区  · 11 年前

    我正在编写一个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 回复  |  直到 11 年前
        1
  •  0
  •   fourpastmidnight    11 年前

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

    高。

        2
  •  0
  •   Steve B    11 年前

    只是想知道 为什么? .

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

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

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

        3
  •  0
  •   Community CDub    7 年前

    你在使用什么类型的网络服务?根据这一点,您可以使用以下属性 XmlIgnore , NonSerialized , IgnoreDataMember

    看见

    Question 1

    Question 2

        4
  •  0
  •   iJade    11 年前

    这是一个已知的错误。

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

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

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

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