Estimados,
tengo el siguiente WebService en VB.NET 2005 que al ingresar el código de un agente debería devolver su información respectiva.
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.Data
Imports System.Data.SqlClient
Imports System
Imports System.Configuration
<WebService(Namespace:="WSAgentes")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Public Class Service
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function WSAgentes(ByVal CodigoAgente As String) As String
'Const fic As String = "conexion.txt"
'Dim texto As String
'Dim sr As New System.IO.StreamReader(fic)
'texto = sr.ReadToEnd()
'sr.Close()
Dim conn1 As String = ConfigurationManager.ConnectionStrings("LocalSqlServer").ToString
'Using conn As New SqlConnection("data source = XXX ; initial catalog = XXX ; user id = XXX; password = XXX")
Dim conn As New SqlConnection(conn1)
conn.Open()
If CodigoAgente = "" Then
Dim a As String = "Debe ingresar el código del agente"
Return a
Else
Dim sel As String = "EXECUTE SP_CON_AGENTES '" & CodigoAgente & "'"
Dim ds As New DataSet()
Dim da As SqlDataAdapter
Try
'Asignar consulta rezaliada a una variable la q nos permitira mostrar el resultado como tabla
da = New SqlDataAdapter(sel, conn)
da.Fill(ds)
Catch ex As Exception
Throw ex
End Try
Dim a As String = ds.GetXml
'Crea archivo en el disco
'ds.WriteXmlSchema("c:\wsparticipe.xml")
'Dim xmlNormal As New Xml.XmlDocument
'xmlNormal.LoadXml(a)
conn.Close()
Return a
End If
'End Using
End Function
End Class
El cual llama a un archivo web.config
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="LocalSqlServer" connectionString="Data Source=XXX;Initial Catalog=XXX;user id=XXX;password=XXX;" providerName="System.Data.SqlClient"/>
</connectionStrings>
</configuration>
El problema es que me ejecuta el WS, pero cuando ingreso el codigo del agente me genera el siguiente error
System.Data.SqlClient.SqlException: Error al intentar adjuntar una base de datos nombrada automáticamente para el archivo C:\Documents and Settings\aaron.valenzuela\Mis documentos\Visual Studio 2005\WebSites\WSAgentes\App_Data\aspnetdb.mdf. Ya existe una base de datos con el mismo nombre, no se puede abrir el archivo especificado o se encuentra en un recurso compartido UNC.
en System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
en System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
en System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
en System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
en System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)
en System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)
en System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
en System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
en System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
en System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
en System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
en System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
en System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
en System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
en System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
en System.Data.SqlClient.SqlConnection.Open()
en Service.WSAgentes(String CodigoAgente)
Alguien sabe que estos haciendo mal?????
Varias cosas:
1) Revisa bien la base de datos, el problema no es el webservice.
2) Hay mejores formas de ejecutar un Stored Procedure, usa SqlCommand.
3) Te falta un Finally para cerrar la conexión.
Estás usando SqlServer Express no? Recuerda siempre poner esos datos, más aún cuando el error probablemente esté ahí y no en el WS.
Saludos!
Estimado cuando la conexión la tenia en el código y no aparte, esto me funcionaba perfectamente.
Estoy usando sqlexpress.
Tengo un conn.close para finalizar la conexión
Saludos,
CitarEstimado cuando la conexión la tenia en el código y no aparte, esto me funcionaba perfectamente.
No entendí esa parte.
CitarTengo un conn.close para finalizar la conexión
Ponlo dentro de un finally del manejo de excepciones.