Conexión ASP.Net con SQL Server en servidor externo

Iniciado por DjFlo, 22 Abril 2013, 17:46 PM

0 Miembros y 1 Visitante están viendo este tema.

DjFlo

Saludos.

Estoy intentando realizar unas pruebas con una sencilla aplicación web ASP.Net que hace uso de bases de datos SQL Server, concretamente sigo un tutorial sobre el uso del servicio de Google Cloud Messaging que explica como utilizarlo para un cliente Android con una aplicación web que envía notificaciones. Desde el servidor local (localhost) he podido hacerlo funcionar sin problemas, sin embargo no lo consigo una vez subida al servidor de Dinahosting. El problema radica en la conexión con la base de datos, donde me lanza el siguiente error:

System.Data.SqlClient.SqlException: Login failed. The login is from an untrusted domain and cannot be used with Windows authentication.

Para localhost no necesito establecer un login con user y password para acceder a la base de datos ya que hace uso de la autenticación de Windows y puedo acceder desde la aplicación web de la siguiente forma (en C#):

SqlConnection con = new SqlConnection(@"Data Source=EQUIPO-PC\SQLEXPRESS;Initial Catalog=DBUSUARIOS;Integrated Security=True");

por lo que entiendo que para un servidor accesible desde cualquier parte esto no es posible. Por ello, he modificado el archivo web.config de la aplicación web ASP.Net para actualizar el connectionString con los datos de conexión a la base de datos del servidor, sin embargo sigo sin poder conectarme.

<connectionStrings>
   <add name="ApplicationServices"
        connectionString="Data Source=bd.server.com;User ID=*****;Password=*****;Initial Catalog=nombreBD"
        providerName="System.Data.SqlClient" />
</connectionStrings>


String strConnection = ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString;
SqlConnection con = new SqlConnection(strConnection);
con.open();


Mi objetivo es poder hacer que funcione la aplicación de la misma forma que en localhost, haciendo uso de connectionString para hacer la conexión a la BD mediante lenguaje C# y sin tener que usar DSN para ello (excepto si no queda más remedio). He de decir que es la primera vez que trabajo con ASP.Net y lo poco que he hecho hasta ahora ha sido siguiendo tutoriales sobre localhost, por lo que no llego a entender este problema en un servidor externo.

¿Podría alguien orientarme para la resolución del problema?
It's time to let it go.

DjFlo

#1
Problema solucionado.

La solución ha sido crear la conexión a través del asistente de vínculo de datos de la siguiente forma:


  • Crear un archivo vacío con extensión .udl
  • Abrir el archivo haciendo doble click, aparecerá la ventana "Propiedades de vínculo de datos".
  • Ir a la pestaña "Proveedor" y seleccionar SQL Server Native Client 10.0
  • Click en Siguiente (nos lleva a la pestaña "Conexión"), rellenar la información de conexión a la BD del servidor, probar la conexión y click en Aceptar. (En mi caso el problema estaba en que usaba la seguridad integrada de Windows NT cuando esto no es posible para acceder a la BD del servidor)
  • Abrir de nuevo el fichero pero esta vez con el Bloc de notas. Borrar las dos primeras líneas ([oledb] y la comentada con punto y coma).
  • Lo que queda es la cadena de conexión correcta. En mi caso tuve que eliminar también el fragmento Provider=SQLNCLI10.1; ya que efectuo la conexión a la BD desde el código de la aplicación en C# de la siguiente forma: SqlConnection con = new SqlConnection("cadenaDeConexion");

Con lo cual el resultado queda así:

SqlConnection con = new SqlConnection(@"Persist Security Info=False;User ID=miUser;Pwd=miPassword;Initial Catalog=nombreBD;Data Source=servidorBD");
con.open();


Y con esto ya he podido pasar de la conexión que hacía en localhost a la conexión necesaria para la BD del servidor, y llegar al post número 100  :xD. Espero que sirva de ayuda.

Saludos.
It's time to let it go.