El formato de la cadena de inicialización no se ajusta a la especificación que comienza en el índice 0

142

Tengo una aplicación ASP.Net que funciona bien en mi máquina de desarrollo local.

Cuando ejecuto esta aplicación en línea, muestra el siguiente error

El formato de la cadena de inicialización no se ajusta a la especificación que comienza en el índice 0

GS Bhangal
fuente
1
Probablemente realice una mala llamada / conexión SQL. Si lo buscas en Google blogs.msdn.com/b/jongallant/archive/2009/05/02/…
Aristos
1
La respuesta más votada en stackoverflow.com/questions/9040266/… parece ser más precisa que la más votada aquí: aunque la cadena de conexión que usa en el desarrollo puede funcionar, la publicación debe proporcionar una cadena de conexión diferente apropiada para la producción, y Esto puede fallar. Por ejemplo, la persona que hizo esa pregunta encontró que la conexión era "$ (ReplacableToken_mcn-Web.config Connection String_0)", que indica que el reemplazo que debería haber ocurrido como parte de la publicación no sucedió.
divega

Respuestas:

183

Verifica tu cadena de conexión. Si necesita ayuda, verifique Cadenas de conexión , que tiene una lista de las más utilizadas.

Cadenas de conexión de uso común:

SQL Server 2012

Seguridad estándar

Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;

Conexión confiable

Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;

Conexión a una instancia de SQL Server

La sintaxis del nombre del servidor / instancia utilizada en la opción del servidor es la misma para todas las cadenas de conexión de SQL Server.

Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;
Password=myPassword;

SQL Server 2005

Seguridad estándar

Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;

Conexión confiable

Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;

Conexión a una instancia de SQL Server

La sintaxis del nombre del servidor / instancia utilizada en la opción del servidor es la misma para todas las cadenas de conexión de SQL Server.

Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;Password=myPassword;

MySQL

Estándar

Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;

Especificar puerto TCP

Server=myServerAddress;Port=1234;Database=myDataBase;Uid=myUsername;Pwd=myPassword;

Oráculo

Usando TNS

Data Source=TORCL;User Id=myUsername;Password=myPassword;

Usando seguridad integrada

Data Source=TORCL;Integrated Security=SSPI;

Usando ODP.NET sin tnsnames.ora

Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID)));User Id=myUsername;Password=myPassword;
Hanlet Escaño
fuente
9
Mi problema no está relacionado con ConnectionString incorrecto. Puedo conectarme desde mi máquina de desarrollo a la base de datos de producción y usarla. Cuando implemento la misma configuración, recibo este error. ¿Tienes idea de lo que podría salir mal? Gracias
Denis Besic
3
Podría haber muchas cosas pasando Denis. Primero, ¿su servidor y su máquina de desarrollo están en la misma red? ¿Qué tipo de inicio de sesión estás usando? ¿Está utilizando algún tipo de proxy, está detrás de un firewall en el servidor de productos? ¿Estás entrando en alguna VPN?
Hanlet Escaño
2
No estoy seguro de quién es el responsable, si es Visual Studio, Tool for Web Deployment o hosting smarterasp.net. Cuando se implementó la aplicación, algo cambió mi cadena de conexiones. Accedí directamente a web.config y lo actualicé manualmente y funciona. Gracias por su tiempo con +1;)
Denis Besic
No funciona, he intentado poner la cadena de conexión correcta.
¿Alguien puede ver esta pregunta? stackoverflow.com/questions/46167682/…
18

Esto podría ayudar a alguien. Mi contraseña contenía un punto y coma, por lo que estaba enfrentando este problema. Así que agregué la contraseña entre comillas. Realmente fue un error tonto.

Cambié lo siguiente:

<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password=pass;word" providerName="System.Data.SqlClient" />

a

<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password='pass;word'" providerName="System.Data.SqlClient" />
Abdul Rehman Sayed
fuente
Sí, este era mi problema con mi contraseña tenía un; así que agregar el '' lo resolvió
Claudio
11

Establezca el proyecto que contiene su DbContextclase como proyecto de inicio.

Estaba recibiendo este error mientras llamaba enable-migrations. Incluso si Package Manager Consoleseleccioné el correcto Default project, todavía estaba mirando el archivo web.config de ese proyecto de inicio, donde la cadena de conexión no estaba presente.

Mercado
fuente
44
+1. Creo que el proyecto inicial debería ser el proyecto que contiene la cadena de conexión. Este fue mi problema. Gracias por su sugerencia de proyecto de inicio.
Tchaps
4

Asegúrese de que su cadena de conexión esté en este formato:

servidor = FOOSERVER; base de datos = BLAH_DB; agrupación = falso; Tiempo de espera de conexión = 60; Seguridad integrada = SSPI;

Si a su cadena le falta la serveretiqueta, el método volvería con este error.

DBNoob
fuente
4

Yo tuve el mismo problema. Localmente el sitio funcionaba bien, pero en azul fallaría con el mensaje anterior.

Resulta que el problema era establecer la cadena de conexiones en el ctor, así:

    public DatabaseContext() 
    {
        Database.Connection.ConnectionString = ConfigurationManager.ConnectionStrings["db"].ConnectionString;
    }

NO funciona, esto:

    public DatabaseContext() : base("db")
    {
    }

Me gana ..

Flores
fuente
Esta es una solución tan extraña, pero también me salvó la vida. Para el registro, "db" es el nombre de la clave de su cadena de conexión en el archivo de configuración (el mío no era "db")
mike
También lo arregló para mí. Tenía una cadena de conexiones válida, pero al configurarla manualmente, el "Formato de la cadena de inicialización no se ajusta a la especificación que comienza en el índice 0".
Sardaukar
4

Verifique su cadena de conexión como si me olvidara de agregar services.AddDbContext<dbsContext>(options => options.UseSqlServer("Default"));

Provoca el error y aquí, cuando agrego Configuration.GetConnectionString, resuelve el problema

como ahora la conexión es:

services.AddDbContext<dbsContext>(options => options.UseSqlServer(Configuration.GetConnectionString("Default")));

funciona bien (este problema se resuelve para .net core)

usuario8099291
fuente
3

Hacer referencia a la ruta sp completa resolvió este problema para mí:

var command = new SqlCommand("DatabaseName.dbo.StoredProcedureName", conn)
luego
fuente
2

Yo tenía el mismo error. En mi caso, esto se debió a que me faltaba una cita de cierre para la contraseña en la cadena de conexión.

Cambiado de esto

<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password='password" providerName="System.Data.SqlClient" />

A

<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password='password'" providerName="System.Data.SqlClient" />
Amer Bashoeb
fuente
Escriba un código de muestra u otra cosa para que su respuesta sea perfecta. Una línea no explica todo
Manish Kumawat
Por supuesto. Edité mi respuesta arriba.
Amer Bashoeb
1

Esto también sucede cuando copia una página web de una solución a otra, luego ejecuta su solución y descubre que tiene un nombre de cadena de conexión diferente en la configuración web. Luego cambia sin cuidado el nombre de la cadena de conexión en el panel de propiedades en la vista de diseño de la página.

Es mejor simplemente cambiarlo en la parte del código en lugar del diseño.

Gellie Ann
fuente
1

Mi problema fue que agregué el código de registro de la base de datos a mi constructor para un objeto DB, y esto pareció causar estragos en mi perfil de implementación azul.

FYI: simplifiqué este ejemplo, en el código real, esto se desactivó en producción (pero aún en el código)

public class MyDB : DbContext
{
    public MyDB()
    {
         this.Database.Log = x => { Debug.WriteLine(x); };
    }
}
Aaron Sherman
fuente
1

Tenía un error tipográfico en mis cadenas de conexión "Base de datos == PESitecore1_master"

<add name="master" connectionString="user id=sa;password=xxxxx;Data Source=APR9038KBD\SQL2014;Database==PESitecore1_master"/>
Azadeh Khojandi
fuente
1

Tuve el mismo problema y finalmente logré resolverlo de la siguiente manera:

El problema estaba en la definición de la cadena de conexión en mi web.config.

<add name="DefaultConnection" connectionString="DefaultConnection_ConnectionString" providerName="System.Data.SqlClient"/>

Lo anterior funcionó perfectamente a nivel local porque utilicé una base de datos local cuando administré usuarios y roles. Cuando transferí mi aplicación a IIS, la base de datos local ya no era accesible, además me gustaría usar mi base de datos en SQL Server. Así que cambio la cadena de conexión anterior por el siguiente equivalente de SQL Server DB:

<add name="DefaultConnection" connectionString="data source=MY_SQL_SERVER; Initial Catalog=MY_DATABASE_NAME; Persist Security Info=true; User Id=sa;Password=Mybl00dyPa$$" providerName="System.Data.SqlClient"/>

NOTA: lo anterior, también, suponga que va a utilizar el mismo SQL Server de su casilla local (en caso de que lo incorpore a su web.config local, eso es exactamente lo que hice en mi caso).

Andreas Venieris
fuente
1

Tuve el mismo problema, descubrí que la implementación en IIS no configuró las cadenas de conexión correctamente. eran '$ (ReplacableToken_devConnection-Web.config Connection String_0)' al ver las cadenas de conexión del sitio en IIS, en lugar de la cadena de conexión real. Los actualicé allí, y todo funcionó como se esperaba

jason
fuente
puede usted por favor elaborarlo más
TechnicalKeera
TAMBIÉN tengo el mismo problema y tengo 3 semanas stackoverflow.com/questions/48929891/…
TechnicalKeera
1

Copié y pegué la configuración de mi cadena de conexión en mi proyecto de prueba y comencé a encontrarme con este error. La cadena de conexión funcionó bien en mi proyecto WebAPI. Aquí está mi solución.

var connection = ConfigurationManager.ConnectionStrings["MyConnectionString"];
var unitOfWork = new UnitOfWork(new SqlConnection(connection.ConnectionString));
Kris Kilton
fuente
1

Quité & quot al final de la cadena de conexión y funcionó

En vez de

App=EntityFramework&quot;

Usado

App=EntityFramework;

Establecer DefaultConnection como se muestra a continuación

<add name="DefaultConnection" connectionString="data source=(local);initial catalog=NamSdb;persist security info=True;user id=sa;password=sa;MultipleActiveResultSets=True;App=EntityFramework;" providerName="System.Data.SqlClient" />

Nota: En connectionString No incluya:
| x | Información de metadatos: "metadata = res: // * /"
| x | Cotizaciones codificadas: "" "

Sujay UN
fuente
0

Mi problema no era que la cadena de conexión que estaba proporcionando era incorrecta, o que la cadena de conexión en app.config pensé que estaba usando era incorrecta, sino que estaba usando la app.config incorrecta.

Jeff Dege
fuente
0

A veces, el servicio del servidor SQL no se ha iniciado. Esto puede generar el error. Vaya a Servicios e inicie Servidor SQL. Esto debería hacer que funcione. ingrese la descripción de la imagen aquí

Claudinei Ferreira
fuente
Si Sql Server Express no se inicia, obtendrá la excepción de instancia de servidor, no la que OP describió en su pregunta.
noobprogrammer
0

Para el otro alma desafortunada que administra una aplicación de formularios web heredada que usa una fuente sqldatasource en línea, junto con las cadenas de conexión almacenadas en web.config, entonces puede obtener este error si accede a su cadena de conexión como <% APSDataConnectionString%> en lugar de < % $ ConnectionStrings: MyConnectionString%>. Esto nos sucedió al actualizar .NET de 3.5 a 4.x.

<asp:DropDownList ID="ddl" runat="server" DataSourceID="SqlDataSource1"
  DataTextField="value" DataValueField="id"></asp:DropDownList>                
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
  ConnectionString="<%$ ConnectionStrings:MyConnectionString %>"
  SelectCommand="select id, value from a_table">
</asp:SqlDataSource>
Miguel
fuente
0

En mi caso, el problema era que en el servidor, la aplicación usaba un archivo appsettings.json diferente.

AGuyCalledGerald
fuente
0

En mi caso, recibí un error similar:

La aplicación arrojó una excepción no controlada. System.ArgumentException: el formato de la cadena de inicialización no se ajusta a la especificación que comienza en el índice 91.

Cambio mi cadena de conexión de:

Servidor = .; Base de datos = dbname; Id. De usuario = myuserid; Contraseña = mypassword "

a:

Servidor = .; Base de datos = dbname; Id. De usuario = myuserid; Contraseña = 'mypassword' "

y funciona, agregué comillas simples a la contraseña.

YuKeung
fuente
0

También tuve este error y pude resolverlo de la siguiente manera: anteriormente escribí la cadena de conexión a appsettings.json en una sección que creé (ConnectionsStrings (observe la "s" adicional) e intenté conectarme a mi base de datos que causó el error. Era una aplicación ASP.NET CORE, por lo que quería conectarme a ella con el método .GetConnectionString (detalles sobre esto aquí ). Parece que este método busca implícitamente una cadena de conexión en la sección "ConnectionStrings", que no No existe. Cuando lo cambié / corregí a "ConnectionStrings" funcionó como se esperaba.

despistado
fuente
0

Como sé, cada vez que tenga más de 1 cadena de conexión en su solución (su proyecto actual, proyecto de inicio, ...), puede enfrentar este error

este enlace puede ayudarlo a hacer clic

aseman arabsorkhi
fuente