Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
Inicio > Foros > Tecnologías .NET > .net Remoting y WSDL
-Foros de debate

Tecnologías .NET
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

.net Remoting y WSDL
Enviado por Jonny el día 5 de abril de 2006

.net Remoting y WSDL

Buenas,

Estoy intentando publicar un servicio web mediante remoting, para ello utilizo una clase que hereda de MarshalByRefObject. Esta clase únicamente tiene un método, al que como parámetro se le pasa otra clase [Serializable] que he creado. Esta última clase hace implemeta un interface también creada por mí, que contiene unos metodos básicos para tratamiento de objetos.

De forma más clara:

ObjetoRemoto.cs

/* Librerias importadas ... */

public class ObjetoRemoto : MarshalByRefObject
{
/* Campos ... */

public override object InitializeLifetimeService()
{
/* Cuerpo ... */
}

public int Metodo(ObjetoSerializable obj)
{
/* Cuerpo ... */
}
}

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

ObjetoSerializable.cs

/* Librerias importadas ... */

[Serializable]
public class ObjetoSerializable : IMiInterface
{
/* Campos ... */

/* Metodos ... */
}

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

IMiInterface.cs

/* Librerias importadas ... */

public interface IMiInterface
{
/* Métodos básicos ... */
}

Cuando publico este servicio en el puerto 5000 y con el nombre "Servicio.soap", la comunicación por remoting funciona bien, pero cuando intento generar la clase proxy mediante Soapsuds me da un error de servidor, y cuando pongo en el navegador http://localhost:5000/Servicio.soap?wsdl me da la siguiente excepción:

System.NullReferenceException: Referencia a objeto no establecida como instancia de un objeto.
at System.Runtime.Remoting.MetadataServices.RealSchemaType.PrintMessageWsdl(TextWriter textWriter, StringBuilder sb, String indent, ArrayList refNames)
at System.Runtime.Remoting.MetadataServices.XMLNamespace.PrintMessageWsdl(TextWriter textWriter, StringBuilder sb, String indent, ArrayList refNames)
at System.Runtime.Remoting.MetadataServices.WsdlGenerator.PrintWsdl()
at System.Runtime.Remoting.MetadataServices.WsdlGenerator.Generate()
at System.Runtime.Remoting.MetadataServices.SUDSGenerator.Generate()
at System.Runtime.Remoting.MetadataServices.MetaData.ConvertTypesToSchemaToStream(ServiceType[] serviceTypes, SdlType sdlType, Stream outputStream)
at System.Runtime.Remoting.MetadataServices.SdlChannelSink.GenerateSdl(SdlType sdlType, IServerResponseChannelSinkStack sinkStack, ITransportHeaders requestHeaders, ITransportHeaders responseHeaders, Stream& outputStream)
at System.Runtime.Remoting.MetadataServices.SdlChannelSink.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()

He comprobado que al no obligar al ObjetoSerializable a implementar el interface IMiInterface no me da ningún problema. Cada uno de estos tres ficheros pertenece a un assembly dirente, y también espacios de nombres diferentes. Mi objetivo es que se genere el WSDL en el primer ejemplo, ya que si el ObjetoSerializable no implementa IMiInterface pierde todas las funcionalidades de tratamiento de objetos que necesito.

¿Esto es un fallo del framework? ¿Tiene solución mi problema?

Gracias de antemano.

 

Tienda
Patrocinados
 

Copyright © 1999-2006 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network