extra properties exposed in WSDL to client



I have a WCF service. It exposes only one method, that accepts a request
object and returns a response object. The request object has some properties
to set, according to my DataContract. However, some extra properties are
exposed to the client. For instance, apart from my defined
"ArticleNumbers"-property, an extra "ArticlesNumbersField-property is also
exposed. Also, something called ExtensionData and ExtensionDataField is also
exposed, plus something called PropertyChangedEvent. I don't see any use for
these fields, and I would like only the fields that I have specified in my
DataContract to be visible to the client. These extra fields are also visible
to the client in my response object. Why is this behaviour, and what am I
doing wrong please?


THE SERVICE INTERFACE (IService.vb) LOOKS LIKE THIS:

<ServiceContract(Namespace:="https://ws.claw.scania.com/api/";)> _
Public Interface ICLAWService


<OperationContract()> _
Function GetArticleInfo(ByVal param As
DataContracts.RequestContract_ArticleInfo) As
DataContracts.ResponseContract_ArticleInfo

End Interface

THE IMPLEMENTATION (Service.svc) LOOKS LIKE THIS:

Public Class CLAWService
Implements ICLAWService

Public Sub New()
End Sub

Public Function GetArticleInfo(ByVal param As
DataContracts.RequestContract_ArticleInfo) As
DataContracts.ResponseContract_ArticleInfo Implements
ICLAWService.GetArticleInfo

'get username from context
Dim userName As String =
ServiceSecurityContext.Current.PrimaryIdentity.Name

Dim externalServices As New ExternalServices.Service

Dim ret As DataContracts.ResponseContract_ArticleInfo =
externalServices.GetArticleInfo(userName, param)

Return ret

End Function

End Class


REQUESTCONTRACT_ARTICLEINFO LOOKS LIKE THIS:

Imports System.Runtime.Serialization



<DataContract()> _
Public Class RequestContract_ArticleInfo
Private pArticleNumbers As Integer()
Private pDistributorNumber As Integer
Private pPricelist As String
Private pRepairDate As Date

<DataMember()> _
Public Property ArticleNumbers() As Integer()
Get
Return pArticleNumbers
End Get
Set(ByVal value() As Integer)
pArticleNumbers = value
End Set
End Property

<DataMember()> _
Public Property DistributorNumber() As Integer
Get
Return pDistributorNumber
End Get
Set(ByVal value As Integer)
pDistributorNumber = value
End Set
End Property

<DataMember()> _
Public Property Pricelist() As String
Get
Return pPricelist
End Get
Set(ByVal value As String)
pPricelist = value
End Set
End Property

<DataMember()> _
Public Property RepairDate() As Date
Get
Return pRepairDate
End Get
Set(ByVal value As Date)
pRepairDate = value
End Set
End Property



End Class




RESPONSECONTRACT_ARTICLEINFO LOOKS LIKE THIS:

Imports System.Runtime.Serialization


<DataContract()> _
Public Class ResponseContract_ArticleInfo

Public Structure Article
Dim ArticleNumber As Integer
Dim Description As String
Dim StartDate As Date
Dim GrossPrice As Decimal
Dim NetPrice As Decimal
End Structure



Private pArticles() As Article

<DataMember()> _
Public Property Articles() As Article()
Get
Return pArticles
End Get
Set(ByVal value() As Article)
pArticles = value
End Set
End Property


End Class





-----------------------------------------------------------------------------

When a client makes a service reference to my service it generates the
following code in the client's service reference:

'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:2.0.50727.3074
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------

Option Strict On
Option Explicit On

Imports System
Imports System.Runtime.Serialization

Namespace ws1

<System.Diagnostics.DebuggerStepThroughAttribute(), _

System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0"), _

System.Runtime.Serialization.DataContractAttribute(Name:="RequestContract_ArticleInfo",
[Namespace]:="http://schemas.datacontract.org/2004/07/Scania.CLAW.DataContracts";), _
System.SerializableAttribute()> _
Partial Public Class RequestContract_ArticleInfo
Inherits Object
Implements System.Runtime.Serialization.IExtensibleDataObject,
System.ComponentModel.INotifyPropertyChanged

<System.NonSerializedAttribute()> _
Private extensionDataField As
System.Runtime.Serialization.ExtensionDataObject

<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private ArticleNumbersField() As Integer

<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private DistributorNumberField As Integer

<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private PricelistField As String

<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private RepairDateField As Date

<Global.System.ComponentModel.BrowsableAttribute(false)> _
Public Property ExtensionData() As
System.Runtime.Serialization.ExtensionDataObject Implements
System.Runtime.Serialization.IExtensibleDataObject.ExtensionData
Get
Return Me.extensionDataField
End Get
Set
Me.extensionDataField = value
End Set
End Property

<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property ArticleNumbers() As Integer()
Get
Return Me.ArticleNumbersField
End Get
Set
If (Object.ReferenceEquals(Me.ArticleNumbersField, value) <>
true) Then
Me.ArticleNumbersField = value
Me.RaisePropertyChanged("ArticleNumbers")
End If
End Set
End Property

<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property DistributorNumber() As Integer
Get
Return Me.DistributorNumberField
End Get
Set
If (Me.DistributorNumberField.Equals(value) <> true) Then
Me.DistributorNumberField = value
Me.RaisePropertyChanged("DistributorNumber")
End If
End Set
End Property

<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property Pricelist() As String
Get
Return Me.PricelistField
End Get
Set
If (Object.ReferenceEquals(Me.PricelistField, value) <>
true) Then
Me.PricelistField = value
Me.RaisePropertyChanged("Pricelist")
End If
End Set
End Property

<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property RepairDate() As Date
Get
Return Me.RepairDateField
End Get
Set
If (Me.RepairDateField.Equals(value) <> true) Then
Me.RepairDateField = value
Me.RaisePropertyChanged("RepairDate")
End If
End Set
End Property

Public Event PropertyChanged As
System.ComponentModel.PropertyChangedEventHandler Implements
System.ComponentModel.INotifyPropertyChanged.PropertyChanged

Protected Sub RaisePropertyChanged(ByVal propertyName As String)
Dim propertyChanged As
System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent
If (Not (propertyChanged) Is Nothing) Then
propertyChanged(Me, New
System.ComponentModel.PropertyChangedEventArgs(propertyName))
End If
End Sub
End Class

<System.Diagnostics.DebuggerStepThroughAttribute(), _

System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0"), _

System.Runtime.Serialization.DataContractAttribute(Name:="ResponseContract_ArticleInfo",
[Namespace]:="http://schemas.datacontract.org/2004/07/Scania.CLAW.DataContracts";), _
System.SerializableAttribute()> _
Partial Public Class ResponseContract_ArticleInfo
Inherits Object
Implements System.Runtime.Serialization.IExtensibleDataObject,
System.ComponentModel.INotifyPropertyChanged

<System.NonSerializedAttribute()> _
Private extensionDataField As
System.Runtime.Serialization.ExtensionDataObject

<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private ArticlesField() As ws1.ResponseContract_ArticleInfo.Article

<Global.System.ComponentModel.BrowsableAttribute(false)> _
Public Property ExtensionData() As
System.Runtime.Serialization.ExtensionDataObject Implements
System.Runtime.Serialization.IExtensibleDataObject.ExtensionData
Get
Return Me.extensionDataField
End Get
Set
Me.extensionDataField = value
End Set
End Property

<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property Articles() As
ws1.ResponseContract_ArticleInfo.Article()
Get
Return Me.ArticlesField
End Get
Set
If (Object.ReferenceEquals(Me.ArticlesField, value) <> true)
Then
Me.ArticlesField = value
Me.RaisePropertyChanged("Articles")
End If
End Set
End Property

Public Event PropertyChanged As
System.ComponentModel.PropertyChangedEventHandler Implements
System.ComponentModel.INotifyPropertyChanged.PropertyChanged

Protected Sub RaisePropertyChanged(ByVal propertyName As String)
Dim propertyChanged As
System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent
If (Not (propertyChanged) Is Nothing) Then
propertyChanged(Me, New
System.ComponentModel.PropertyChangedEventArgs(propertyName))
End If
End Sub

<System.Diagnostics.DebuggerStepThroughAttribute(), _

System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0"), _

System.Runtime.Serialization.DataContractAttribute(Name:="ResponseContract_ArticleInfo.Article",

[Namespace]:="http://schemas.datacontract.org/2004/07/Scania.CLAW.DataContracts";), _
System.SerializableAttribute()> _
Partial Public Structure Article
Implements System.Runtime.Serialization.IExtensibleDataObject,
System.ComponentModel.INotifyPropertyChanged

<System.NonSerializedAttribute()> _
Private extensionDataField As
System.Runtime.Serialization.ExtensionDataObject

<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private ArticleNumberField As Integer

<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private DescriptionField As String

<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private GrossPriceField As Decimal

<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private NetPriceField As Decimal

<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private StartDateField As Date

Public Property ExtensionData() As
System.Runtime.Serialization.ExtensionDataObject Implements
System.Runtime.Serialization.IExtensibleDataObject.ExtensionData
Get
Return Me.extensionDataField
End Get
Set
Me.extensionDataField = value
End Set
End Property

<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property ArticleNumber() As Integer
Get
Return Me.ArticleNumberField
End Get
Set
If (Me.ArticleNumberField.Equals(value) <> true) Then
Me.ArticleNumberField = value
Me.RaisePropertyChanged("ArticleNumber")
End If
End Set
End Property

<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property Description() As String
Get
Return Me.DescriptionField
End Get
Set
If (Object.ReferenceEquals(Me.DescriptionField, value)
<> true) Then
Me.DescriptionField = value
Me.RaisePropertyChanged("Description")
End If
End Set
End Property

<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property GrossPrice() As Decimal
Get
Return Me.GrossPriceField
End Get
Set
If (Me.GrossPriceField.Equals(value) <> true) Then
Me.GrossPriceField = value
Me.RaisePropertyChanged("GrossPrice")
End If
End Set
End Property

<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property NetPrice() As Decimal
Get
Return Me.NetPriceField
End Get
Set
If (Me.NetPriceField.Equals(value) <> true) Then
Me.NetPriceField = value
Me.RaisePropertyChanged("NetPrice")
End If
End Set
End Property

<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property StartDate() As Date
Get
Return Me.StartDateField
End Get
Set
If (Me.StartDateField.Equals(value) <> true) Then
Me.StartDateField = value
Me.RaisePropertyChanged("StartDate")
End If
End Set
End Property

Public Event PropertyChanged As
System.ComponentModel.PropertyChangedEventHandler Implements
System.ComponentModel.INotifyPropertyChanged.PropertyChanged

Sub RaisePropertyChanged(ByVal propertyName As String)
Dim propertyChanged As
System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent
If (Not (propertyChanged) Is Nothing) Then
propertyChanged(Me, New
System.ComponentModel.PropertyChangedEventArgs(propertyName))
End If
End Sub
End Structure
End Class

<System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel",
"3.0.0.0"), _

System.ServiceModel.ServiceContractAttribute([Namespace]:="https://ws.claw.scania.com/api/";, ConfigurationName:="ws1.ICLAWService")> _
Public Interface ICLAWService


<System.ServiceModel.OperationContractAttribute(Action:="https://ws.claw.scania.com/api/ICLAWService/GetArticleInfo";,

ReplyAction:="https://ws.claw.scania.com/api/ICLAWService/GetArticleInfoResponse";)> _
Function GetArticleInfo(ByVal param As
ws1.RequestContract_ArticleInfo) As ws1.ResponseContract_ArticleInfo
End Interface

<System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel",
"3.0.0.0")> _
Public Interface ICLAWServiceChannel
Inherits ws1.ICLAWService, System.ServiceModel.IClientChannel
End Interface

<System.Diagnostics.DebuggerStepThroughAttribute(), _
System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel",
"3.0.0.0")> _
Partial Public Class CLAWServiceClient
Inherits System.ServiceModel.ClientBase(Of ws1.ICLAWService)
Implements ws1.ICLAWService

Public Sub New()
MyBase.New
End Sub

Public Sub New(ByVal endpointConfigurationName As String)
MyBase.New(endpointConfigurationName)
End Sub

Public Sub New(ByVal endpointConfigurationName As String, ByVal
remoteAddress As String)
MyBase.New(endpointConfigurationName, remoteAddress)
End Sub

Public Sub New(ByVal endpointConfigurationName As String, ByVal
remoteAddress As System.ServiceModel.EndpointAddress)
MyBase.New(endpointConfigurationName, remoteAddress)
End Sub

Public Sub New(ByVal binding As
System.ServiceModel.Channels.Binding, ByVal remoteAddress As
System.ServiceModel.EndpointAddress)
MyBase.New(binding, remoteAddress)
End Sub

Public Function GetArticleInfo(ByVal param As
ws1.RequestContract_ArticleInfo) As ws1.ResponseContract_ArticleInfo
Implements ws1.ICLAWService.GetArticleInfo
Return MyBase.Channel.GetArticleInfo(param)
End Function
End Class
End Namespace

.



Relevant Pages

  • Re: "Late Binding" error is killing me!
    ... Delegate Sub MessageSuccess() ... Private _NetIPAddress As String ... Private _BroadcastMessage As String ... Public Sub New ...
    (microsoft.public.dotnet.languages.vb)
  • Re: Binary Search Tree - CompareTo Error
    ... bstLedenLijst contains a collection of Persoon objects, you are attempting to compare Persoon objects to a String object! ... Private Class TreeNode ... Private mLeftNode As TreeNode ... Public Sub New ...
    (microsoft.public.dotnet.languages.vb)
  • MS Project Add-in Command Button Event Problem
    ... builds a string and displays it in a message box. ... Private addInInstance As Object ... Public Sub OnBeginShutdownImplements ... Dim toolBar As Microsoft.Office.Core.CommandBar = Nothing ...
    (microsoft.public.office.developer.com.add_ins)
  • MS Project Add-in Command Button Event Problem
    ... builds a string and displays it in a message box. ... Private addInInstance As Object ... Public Sub OnBeginShutdownImplements ... Dim toolBar As Microsoft.Office.Core.CommandBar = Nothing ...
    (microsoft.public.office.developer.com.add_ins)
  • Re: common dialog w/api instead of COMDLG32.OCX, possible?
    ... As Long, ByVal lpHelpFile As String, ByVal wCommand As Long, ByVal dwData As ... Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias ... Public Property Get FileNameAs String ...
    (microsoft.public.vb.winapi)

Quantcast