Hi NG,
I tried to implement the compressionsink-example of Ingo Rammer.
the client-app.config-file looks like that
<channels>
<channel ref="http">
<serverProviders>
<provider ref="wsdl"/>
<formatter ref="soap" typeFilterLevel="Full" />
<formatter ref="binary" typeFilterLevel="Full" />
</serverProviders>
<clientProviders>
<formatter ref="soap"/>
<provider type="CompressionSink.CompressionClientSinkProvider,
CompressionSink" />
</clientProviders>
</channel>
</channels>
the server-appp.config-file looks like that:
<channels>
<channel ref="http" port="1235">
<serverProviders>
<provider ref="wsdl"/>
<formatter ref="soap" typeFilterLevel="Full" />
<formatter ref="binary" typeFilterLevel="Full" />
</serverProviders>
<serverProviders>
<provider type="CompressionSink.CompressionServerSinkProvider,
CompressionSink" />
<formatter ref="soap"/>
</serverProviders>
</channel>
</channels>
Without the clientProviders-part in the client-app.config-file the example
works fine and the serverside CompressionSink.dll is used.
But with this part the app gets the Exception
System.Xml.XmlException: Ung?ltiges Zeichen in der angegebenen Codierung.
Zeile 1, Position 3.\r\n\nServer stack trace: \n at
System.Xml.XmlScanner.GetChars(Byte[] srcBuffer, Int32& srcOffset, Int32
srcLen, Char[] destBuffer, Int32 destOffset, Boolean zeroedOut)\r\n at
System.Xml.XmlScanner.Read()\r\n at
System.Xml.XmlScanner.ScanContent()\r\n at
System.Xml.XmlTextReader.ParseRoot()\r\n at
System.Xml.XmlTextReader.Read()\r\n at
System.Runtime.Serialization.Formatters.Soap.SoapParser.ParseXml()\r\n at
System.Runtime.Serialization.Formatters.Soap.SoapParser.Run()\r\n at
System.Runtime.Serialization.Formatters.Soap.ObjectReader.Deserialize(Header
Handler handler, ISerParser serParser)\r\n at
System.Runtime.Serialization.Formatters.Soap.SoapFormatter.Deserialize(Strea
m serializationStream, HeaderHandler handler)\r\n at
System.Runtime.Remoting.Channels.CoreChannel.DeserializeSoapRequestMessage(S
tream inputStream, Header[] h, Boolean bStrictBinding, TypeFilterLevel
securityLevel)\r\n at
System.Runtime.Remoting.Channels.SoapServerFormatterSink.ProcessMessage(ISer
verChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders
requestHeaders, Stream requestStream, IMessage& responseMsg,
ITransportHeaders& responseHeaders, Stream& responseStream)\n\nException
rethrown at [0]: \n at
System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage
reqMsg, IMessage retMsg)\r\n at
System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&
msgData, Int32 type)\r\n at
now my CallPoint.
I use the .Net Framework 1.1.
Where the bug, or is there a better way in .Net 1.1 to reduce the network
traffik.
Thanks a lot
Martin
Martin Klauck - 28 Jul 2003 10:01 GMT
I solved my problem,
first you have to declare the provider type and then the
formatter ref. If you change the order there will be a conversationerror.
Thanks and Ciao
Martin