Как вы звоните в свой сервис? Я только что попробовал этот сценарий (см. Код ниже), и сервер правильно печатает значения.
Public Class StackOverflow_6116861_751090
<ServiceContract()> _
Public Interface ITest
<OperationContract()> Sub Process(ByVal dict As Dictionary(Of String, String))
End Interface
Public Class Service
Implements ITest
Public Sub Process(ByVal dict As System.Collections.Generic.Dictionary(Of String, String)) Implements ITest.Process
For Each key In dict.Keys
Console.WriteLine("{0}: {1}", key, dict(key))
Next
End Sub
End Class
Public Shared Sub Test()
Dim baseAddress As String = "http://" + Environment.MachineName + ":8000/Service"
Dim host As ServiceHost = New ServiceHost(GetType(Service), New Uri(baseAddress))
host.AddServiceEndpoint(GetType(ITest), New BasicHttpBinding(), "")
host.Open()
Console.WriteLine("Host opened")
Dim factory As ChannelFactory(Of ITest) = New ChannelFactory(Of ITest)(New BasicHttpBinding(), New EndpointAddress(baseAddress))
Dim proxy As ITest = factory.CreateChannel()
Dim dict As Dictionary(Of String, String) = New Dictionary(Of String, String)
dict.Add("o\ne", "uno")
dict.Add("two", "do\s")
dict.Add("th\ree", "tr\es")
proxy.Process(dict)
End Sub
End Class