¿Pasar datareader a un servicio web?

09/12/2005 - 12:42 por Alicia | Informe spam
Hola,
estoy intentando pasar un datareader con datos a un servicio web pero no se
si es posible ya que da error.
Asi defino la funcion del servicio web:

<WebMethod()> Public Sub InsertaDataReader(ByRef msgError As String,
ByVal pass As String, _
ByRef rs As OleDb.OleDbDataReader)

Y desde un programa cliente en vb .net le paso el datareader. El servicio
web me compila bien sin darme ningún error, sin embargo cuando visito la
página del servicio web o intento agregar la web reference en el proyecto
entonces da un error bastante larguito:

¿Alguien sabe a lo que se puede deber?

Error que da:
[NullReferenceException: Referencia a objeto no establecida como instancia
de un objeto.]
System.Xml.Serialization.XmlAttributes..ctor(ICustomAttributeProvider
provider) +105
System.Xml.Serialization.TypeScope.GetEnumeratorElementType(Type type)
+107
System.Xml.Serialization.TypeScope.ImportTypeDesc(Type type, Boolean
canBePrimitive, MemberInfo memberInfo) +1463
System.Xml.Serialization.TypeScope.GetTypeDesc(Type type, MemberInfo
source, Boolean directReference) +50

System.Xml.Serialization.XmlReflectionImporter.ImportMemberMapping(XmlReflec
tionMember xmlReflectionMember, String ns, XmlReflectionMember[]
xmlReflectionMembers) +34

System.Xml.Serialization.XmlReflectionImporter.ImportMembersMapping(XmlRefle
ctionMember[] xmlReflectionMembers, String ns, Boolean hasWrapperElement)
+300

[InvalidOperationException: Error al reflejar 'rs'.]

System.Xml.Serialization.XmlReflectionImporter.ImportMembersMapping(XmlRefle
ctionMember[] xmlReflectionMembers, String ns, Boolean hasWrapperElement)
+607

System.Xml.Serialization.XmlReflectionImporter.ImportMembersMapping(String
elementName, String ns, XmlReflectionMember[] members, Boolean
hasWrapperElement) +108

System.Web.Services.Protocols.SoapReflector.ImportMembersMapping(XmlReflecti
onImporter xmlImporter, SoapReflectionImporter soapImporter, Boolean
serviceDefaultIsEncoded, Boolean rpc, SoapBindingUse use, SoapParameterStyle
paramStyle, String elementName, String elementNamespace, Boolean
nsIsDefault, XmlReflectionMember[] members, Boolean validate) +169

System.Web.Services.Protocols.SoapReflector.ReflectMethod(LogicalMethodInfo
methodInfo, Boolean client, XmlReflectionImporter xmlImporter,
SoapReflectionImporter soapImporter, String defaultNs) +1977

[InvalidOperationException: No se puede reflejar el método
ExportaDatos.InsertaDataReader.]

System.Web.Services.Protocols.SoapReflector.ReflectMethod(LogicalMethodInfo
methodInfo, Boolean client, XmlReflectionImporter xmlImporter,
SoapReflectionImporter soapImporter, String defaultNs) +5497
System.Web.Services.Description.SoapProtocolReflector.ReflectMethod()
+129

System.Web.Services.Description.ProtocolReflector.ReflectBinding(ReflectedBi
nding reflectedBinding) +1964
System.Web.Services.Description.ProtocolReflector.Reflect() +509

System.Web.Services.Description.ServiceDescriptionReflector.ReflectInternal(
ProtocolReflector[] reflectors) +490
System.Web.Services.Description.ServiceDescriptionReflector.Reflect(Type
type, String url) +110
System.Web.Services.Protocols.DocumentationServerType..ctor(Type type,
String uri) +157
System.Web.Services.Protocols.DocumentationServerProtocol.Initialize()
+262
System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type,
HttpContext context, HttpRequest request, HttpResponse response, Boolean&
abortProcessing) +106

[InvalidOperationException: No se puede administrar la solicitud.]
System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type,
HttpContext context, HttpRequest request, HttpResponse response, Boolean&
abortProcessing) +205

System.Web.Services.Protocols.WebServiceHandlerFactory.CoreGetHandler(Type
type, HttpContext context, HttpRequest request, HttpResponse response) +82

[InvalidOperationException: No se pudo administrar la solicitud.]

System.Web.Services.Protocols.WebServiceHandlerFactory.CoreGetHandler(Type
type, HttpContext context, HttpRequest request, HttpResponse response) +154

System.Web.Services.Protocols.WebServiceHandlerFactory.GetHandler(HttpContex
t context, String verb, String url, String filePath) +94
System.Web.HttpApplication.MapHttpHandler(HttpContext context, String
requestType, String path, String pathTranslated, Boolean useAppConfig) +699

System.Web.MapHandlerExecutionStep.System.Web.HttpApplication+IExecutionStep
.Execute() +95
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&
completedSynchronously) +173
 

Leer las respuestas

#1 A.Poblacion
09/12/2005 - 12:56 | Informe spam
"Alicia" wrote in message
news:OTgfsWL$
estoy intentando pasar un datareader con datos a un servicio web pero no


se
si es posible ya que da error.
Asi defino la funcion del servicio web:

<WebMethod()> Public Sub InsertaDataReader(ByRef msgError As String,
ByVal pass As String, _
ByRef rs As OleDb.OleDbDataReader)

Y desde un programa cliente en vb .net le paso el datareader. El servicio
web me compila bien sin darme ningún error, sin embargo cuando visito la
página del servicio web o intento agregar la web reference en el proyecto
entonces da un error bastante larguito:

¿Alguien sabe a lo que se puede deber?



No puedes pasar un DataReader a un servicio web. El servicio rueda en
otra máquina, por lo que todo lo que se le pasa tiene que serializarse para
transmitirse por la linea, y luego deserializarse en el otro extremo. El
DataReader no se puede serializar de esta forma, por lo que no vale para
enviarlo o recibirlo como argumento en una llamada a un servicio web.
Tendrás que rehacer la aplicación para que encapsule los datos en un
DataSet, o una clase definida por tí, en lugar de usar el datareader.

Preguntas similares