zoukankan      html  css  js  c++  java
  • Web Reference for a WCF Service has Extra “IdSpecified” Parameter ?

    Question:
     
    I created a WCF service that exposed a method that has one paramater:

    public class Service1 : IService1
    {
        public string GetData(int value)
        {
            return string.Format("You entered: {0}", value);
        }
    }  

    The service has two endpoints defined (wsHttpBinding and basicHttpBinding) so that it would be compatable with older clients.
    The service runs just fine in a .NET 3.0 and .NET 3.5 client app. However, when I create a .NET 2.0 client, the GetData method requires 2 parameters: an integer (expected) and a bool parameter called valueSpecified (unexpected). I never defined the second parameter. Why is this happening and how can I get rid of the second parameter?

    Answer: 

    Another way to avoid the extra boolean parameter to be generated on the client proxy when using .NET 2.0 is to switch to RPC-style enconding in the service contract (the default for both WCF and ASMX is Document Style).
    This way the XmlSerializer on the client will make sure that the parameter always appears in the SOAP requests since it's part of the SOAP 1.1 specification, which is enforced when using the RPC-Style encoding.

    In WCF you can specify the encoding style using the DataContractFormat attribute, either at the service or at the operation level.

    [ServiceContract]
    public interface IService
    {
        [OperationContract]
        [DataContractFormat(Style = OperationFormatStyle.Rpc)]
        string GetData(int value);

    More information on the differences between RPC Style and Document Style encoding in SOAP can be found here.

    In any case please consider carefully the implications of changing the contract of your services, since it can potentially break compatibility with any existing clients.

  • 相关阅读:
    解析3D打印切片软件:Cura
    步步为营,打造CQUI UI框架
    PHP为什么empty可以访问不存在的索引
    这是一篇关于魔法(Science)上网的教程
    【新阁教育】这样玩PLC,是不是有意思多了
    「新阁教育」西门子TIA实现BadApple完整实例
    C#数据结构-赫夫曼树
    C#数据结构-线索化二叉树
    SQL优化器-RBO与CBO分别是什么
    Linux下安装并配置VSCode(Visual Studio Code)
  • 原文地址:https://www.cnblogs.com/mschen/p/4262090.html
Copyright © 2011-2022 走看看