.net Remoting, WSDL i System.ArgumentNullException

0

Witam,

Napisałem prostą aplikację klient-serwer wykorzystującą .net Remoting.

Chciałem pobrać za pomocą przeglądarki definicję WSDL usługi, ale występuje błąd:

System.ArgumentNullException: No message was deserialized prior to calling the DispatchChannelSink.
Parameter name: requestMsg
   at System.Runtime.Remoting.Channels.DispatchChannelSink.ProcessMessage(IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders, Stream& responseStream)
   at System.Runtime.Remoting.Channels.SoapServerFormatterSink.ProcessMessage(IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders, Stream& responseStream)
   at System.Runtime.Remoting.Channels.Http.HttpServerTransportSink.ServiceRequest(Object state)
   at System.Runtime.Remoting.Channels.SocketHandler.ProcessRequestNow()

W celu pobrania WSDL wpisuję w przeglądarkę: http://localhost:37018/MyRemoting?WSDL

Natomiast kod serwera wygląda tak:

HttpServerChannel chan2 = new HttpServerChannel("", 37018, new SoapServerFormatterSinkProvider());
ChannelServices.RegisterChannel(chan2, false);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(ObiektRemoting), "MyRemoting", WellKnownObjectMode.Singleton);

Czy ktoś mógłby mi podpowiedzieć dlaczego występuje ten wyjątek i jak pobrać WSDL?

0

.NetRemoting nie używałem, ale WCF powstał jako unifikacja międzyinnymi tej technologi, jest trochę podobny.
Tam trzeba było dodać Metadatabehavior dla obiektu startowego serwisu (między innymi adres http) ale tutaj niby masz coś takiego już RegisterWellKnown... więc to chyba nie to.

A próbowałeś z takim konstruktorem?
new HttpServerChannel(37018); bez podawania tego "" i FormatterSinkProvider

0

a próbowałeś coś szukać w tym temacie?
http://msdn.microsoft.com/en-us/library/ms973864.aspx

The Remoting object can provide a WSDL (see the Web Services Description Language (WSDL) 1.1) file that describes the object and its methods. Any client that can read and generate SOAP requests corresponding to the WSDL file can invoke this object and communicate to it using SOAP. .NET Remoting Server objects can use the SOAPSUDS.EXE tool, which ships with the .NET SDK, to generate WSDL files that can serve as metadata. This is useful when an organization wants to provide a public service that any client can access and use.

1 użytkowników online, w tym zalogowanych: 0, gości: 1