[Mono-dev] Fwd: Problem with WCF and IEnumerable as return type
Chakotey STME
chakoteystme at gmail.com
Tue Dec 7 02:14:50 EST 2010
This problem still exists.
Does anyone have an idea?
---------- Forwarded message ----------
From: Chakotey STME <chakoteystme at gmail.com>
Date: 2010/11/30
Subject: Problem with WCF and IEnumerable as return type
To: mono-devel-list at lists.ximian.com
Hello,
I have a problem with WCF.
If I have this service contract:
<ServiceContract()> _
Public Interface IHelloService
<OperationContract()> _
Function Greet(ByVal name As String) As IEnumerable(Of Objekt)
End Interface
This Service:
Imports System.ServiceModel
Module Module1
Sub Main()
Dim host As ServiceHost = New ServiceHost(GetType(HelloService))
host.Open()
End Sub
End Module
The implementaion of HelloService of the Service:
Imports Contracts
Public Class HelloService
Implements IHelloService
Public Function Greet(ByVal name As String) As IEnumerable(Of
Objekt) Implements IHelloService.Greet
Dim myObjekt As Objekt = New Objekt
Dim myObjekt2 As Objekt = New Objekt
myObjekt.text = "Hallo"
myObjekt.number = 3 + name.Length
Dim list As IList(Of Objekt) = New List(Of Objekt)
list.Add(myObjekt)
list.Add(myObjekt2)
Return list
End Function
End Class
And this client:
Imports System.ServiceModel
Imports Contracts
Module Module1
Sub Main()
Dim binding = New BasicHttpBinding()
Dim address = New EndpointAddress("http://192.168.100.110:8080")
Dim client = New HelloClient(binding, address)
Dim myObjekt = client.Greet("name")
Console.ReadLine()
End Sub
End Module
The implementation of HelloService from the client:
Imports System.ServiceModel
Imports System.ServiceModel.Channels
Imports System.Runtime.Serialization
Imports Contracts
Public Class HelloClient
Inherits ClientBase(Of IHelloService)
Implements IHelloService
Public Sub New(ByVal binding As Binding, ByVal address As EndpointAddress)
MyBase.New(binding, address)
End Sub
Public Function Greet(ByVal name As String) As IEnumerable(Of
Objekt) Implements IHelloService.Greet
Return Channel.Greet(name)
End Function
End Class
I execute the service and execute the client.
I get this Exception:
Exception Non-empty prefix must be mapped to non-empty namespace URI.
at System.Xml.XmlTextWriter.WriteEndAttribute () [0x00000] in
<filename unknown>:0
at System.Xml.XmlSimpleDictionaryWriter.WriteEndAttribute ()
[0x00000] in <filename unknown>:0
at System.Xml.XmlWriter.WriteAttributeString (System.String prefix,
System.String localName, System.String ns, System.String value)
[0x00000] in <filename unknown>:0
at System.Xml.XmlDictionaryWriter.WriteXmlnsAttribute (System.String
prefix, System.String namespaceUri) [0x00000] in <filename unknown>:0
at System.Runtime.Serialization.DataContractSerializer.WriteStartObject
(System.Xml.XmlDictionaryWriter writer, System.Object graph) [0x00000]
in <filename unknown>:0
at System.Runtime.Serialization.XmlObjectSerializer.WriteObject
(System.Xml.XmlDictionaryWriter writer, System.Object graph) [0x00000]
in <filename unknown>:0
at System.ServiceModel.Dispatcher.DataContractMessagesFormatter+DataContractBodyWriter.WriteMessagePart
(System.Xml.XmlDictionaryWriter writer,
System.ServiceModel.Description.MessageBodyDescription desc,
System.ServiceModel.Description.MessagePartDescription partDesc,
System.Object obj) [0x00000] in <filename unknown>:0
at System.ServiceModel.Dispatcher.DataContractMessagesFormatter+DataContractBodyWriter.OnWriteBodyContents
(System.Xml.XmlDictionaryWriter writer) [0x00000] in <filename
unknown>:0
at System.ServiceModel.Channels.BodyWriter.WriteBodyContents
(System.Xml.XmlDictionaryWriter writer) [0x00000] in <filename
unknown>:0
at System.ServiceModel.Channels.SimpleMessage.OnWriteBodyContents
(System.Xml.XmlDictionaryWriter writer) [0x00000] in <filename
unknown>:0
at System.ServiceModel.Channels.Message.WriteBodyContents
(System.Xml.XmlDictionaryWriter writer) [0x00000] in <filename
unknown>:0
at System.ServiceModel.Channels.Message.WriteBody
(System.Xml.XmlDictionaryWriter writer) [0x00000] in <filename
unknown>:0
at System.ServiceModel.Channels.Message.OnWriteMessage
(System.Xml.XmlDictionaryWriter writer) [0x00000] in <filename
unknown>:0
at System.ServiceModel.Channels.Message.WriteMessage
(System.Xml.XmlDictionaryWriter writer) [0x00000] in <filename
unknown>:0
at System.ServiceModel.Channels.TextMessageEncoder.WriteMessage
(System.ServiceModel.Channels.Message message, System.IO.Stream
stream) [0x00000] in <filename unknown>:0
at System.ServiceModel.Channels.HttpRequestContext.ProcessReply
(System.ServiceModel.Channels.Message msg, TimeSpan timeout) [0x00000]
in <filename unknown>:0
at System.ServiceModel.Channels.HttpRequestContextBase.Reply
(System.ServiceModel.Channels.Message msg, TimeSpan timeout) [0x00000]
in <filename unknown>:0
at System.ServiceModel.Dispatcher.MessageProcessingContext.Reply
(Boolean useTimeout) [0x00000] in <filename unknown>:0
at System.ServiceModel.Dispatcher.OperationInvokerHandler.Reply
(System.ServiceModel.Dispatcher.MessageProcessingContext mrc, Boolean
useTimeout) [0x00000] in <filename unknown>:0
at System.ServiceModel.Dispatcher.OperationInvokerHandler.ProcessRequest
(System.ServiceModel.Dispatcher.MessageProcessingContext mrc)
[0x00000] in <filename unknown>:0
at System.ServiceModel.Dispatcher.BaseRequestProcessorHandler.ProcessRequestChain
(System.ServiceModel.Dispatcher.MessageProcessingContext mrc)
[0x00000] in <filename unknown>:0
at System.ServiceModel.Dispatcher.BaseRequestProcessorHandler.ProcessRequestChain
(System.ServiceModel.Dispatcher.MessageProcessingContext mrc)
[0x00000] in <filename unknown>:0
at System.ServiceModel.Dispatcher.BaseRequestProcessorHandler.ProcessRequestChain
(System.ServiceModel.Dispatcher.MessageProcessingContext mrc)
[0x00000] in <filename unknown>:0
at System.ServiceModel.Dispatcher.HandlersChain.ProcessRequestChain
(System.ServiceModel.Dispatcher.MessageProcessingContext mrc)
[0x00000] in <filename unknown>:0
at System.ServiceModel.Dispatcher.BaseRequestProcessor.ProcessRequest
(System.ServiceModel.Dispatcher.MessageProcessingContext mrc)
[0x00000] in <filename unknown>:0
If I change the return type in the contracts, the client and the
service, from IEnumerable(of objekt) to IList(Of objekt) it works!
Why can't I use IEnumerable as return type?
thanks
chakoteystme
More information about the Mono-devel-list
mailing list