¿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 con datos.
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 Miguel Angel Campos
11/12/2005 - 20:42 | Informe spam
Lo que quieres hacer no es posible hacerlo. Un componente que implementa la
interface IDataReader, en tu caso un OleDbDataReader, depende fisicamente de
una conexión a una base de datos, es decir, la instancia la obtienes despues
de ejecutar una consulta sobre un componente que implemente la interfaz
IDbCommand, en tu caso un OleDbCommand. Esta conexión a la base de datos no
se posible pasarla al servidor donde se ejecuta el WebService, por que no
tiene sentido.

Lo que tienes que hacer es utilizar un DataSet, o un DataTable en .NET 2.0,
rellenarlo en el cliente y pasarlo en la llamada al WebService. Y despues
procesar este DataSet o DataTable en el servidor para hacer con el lo que
estimes oportuno.

Un Saludo,

Miguel Angel Campos
MCAD.NET

"Alicia" escribió en el mensaje
news:uB2%23cWL$
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 con datos.
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



Preguntas similares