Формат строки инициализации не соответствует спецификации, начиная с индекса 0
У меня есть приложение ASP.Net, которое отлично работает на моей локальной машине для разработки.
Когда я запускаю это приложение онлайн, оно показывает следующую ошибку
Формат строки инициализации не соответствует спецификации, начиная с индекса 0
31 ответ
Проверьте строку подключения. Если вам нужна помощь, проверьте строку подключения, в которой есть список наиболее часто используемых.
Обычно используемые строки подключения:
SQL Server 2012
Стандартная безопасность
Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;
Доверенное соединение
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;
Подключение к экземпляру SQL Server
Синтаксис имени сервера / экземпляра, используемый в опции сервера, одинаков для всех строк подключения SQL Server.
Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;
Password=myPassword;
SQL Server 2005
Стандартная безопасность
Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;
Доверенное соединение
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;
Подключение к экземпляру SQL Server
Синтаксис имени сервера / экземпляра, используемый в опции сервера, одинаков для всех строк подключения SQL Server.
Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;Password=myPassword;
MySQL
стандарт
Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
Указание порта TCP
Server=myServerAddress;Port=1234;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
оракул
Использование TNS
Data Source=TORCL;User Id=myUsername;Password=myPassword;
Использование встроенной безопасности
Data Source=TORCL;Integrated Security=SSPI;
Использование ODP.NET без 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;
Это может кому-то помочь. Мой пароль содержал точку с запятой, поэтому столкнулся с этой проблемой. Так что добавил пароль в кавычках. Это была действительно глупая ошибка.
Я изменил следующее:
<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password=pass;word" providerName="System.Data.SqlClient" />
в
<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password='pass;word'" providerName="System.Data.SqlClient" />
Установите проект, содержащий ваши DbContext
класс в качестве запуска проекта.
Я получаю эту ошибку при звонке enable-migrations
, Даже если в Package Manager Console
Я выбрал правильный Default project
, он все еще просматривал файл web.config этого запускаемого проекта, где не было строки подключения.
Проверьте строку подключения, как я забыл добавить services.AddDbContext<dbsContext>(options => options.UseSqlServer("Default"));
Это вызывает ошибку и вот когда я добавляю Configuration.GetConnectionString
тогда это решает проблему
как сейчас связь:
services.AddDbContext<dbsContext>(options => options.UseSqlServer(Configuration.GetConnectionString("Default")));
работает нормально (эта проблема решена для ядра.net)
Убедитесь, что строка подключения имеет следующий формат:
сервер=FOOSERVER; база данных =BLAH_DB; пул = ложь; время ожидания соединения =60; встроенная защита =SSPI;
Если ваша строка отсутствует server
тег затем метод вернется обратно с этой ошибкой.
У меня такая же проблема. Локально сайт работал нормально, но на лазурном не получится с сообщением выше.
Оказывается, проблема заключалась в установке строки подключения в ctor, например так:
public DatabaseContext()
{
Database.Connection.ConnectionString = ConfigurationManager.ConnectionStrings["db"].ConnectionString;
}
НЕ работает, это будет:
public DatabaseContext() : base("db")
{
}
Бьет меня..
Ссылка на полный путь sp решила эту проблему для меня:
var command = new SqlCommand("DatabaseName.dbo.StoredProcedureName", conn)
Я удалил " в конце строки подключения, и это сработало
Вместо того
App=EntityFramework"
Используемый
App=EntityFramework;
Установите DefaultConnection, как показано ниже
<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" />
Примечание. В connectionString не включайте:
| x | Информация о метаданных: "metadata = res: // * /"
| x | Закодированные цитаты: """
Получил эту проблему с SQLite в aspnetcore. Я написал
"DefaultSQLiteConnection": "MyBlog.db"
вместо
"DefaultSQLiteConnection": "Data Source = MyBlog.db"
В моем случае возникла аналогичная ошибка:
Приложение создало необработанное исключение. System.ArgumentException: формат строки инициализации не соответствует спецификации, начиная с индекса 91.
Я меняю строку подключения с:
Сервер =.; База данных = dbname; Идентификатор пользователя = myuserid; Пароль =mypassword"
кому:
Сервер =.; База данных = dbname; Идентификатор пользователя = myuserid; Пароль ='mypassword'"
и он работает, я добавил к паролю одинарные кавычки.
В моем случае проблема заключалась в кодировке строки подключения.
В локальном режиме он работал без проблем, но при установке в производственной среде показывал эту ошибку.
Мое приложение позволяет установить строку подключения с помощью формы, и когда строка подключения была скопирована из локальной в производственную, были введены невидимые символы, и хотя строка подключения была визуально идентична на уровне байтов, это не так.
Вы можете проверить, является ли это вашей проблемой, выполнив следующие действия:
- Скопируйте строку подключения в Notepad++.
- Измените кодировку на ANSI. В меню "Кодирование"> "Кодировать в ANSI".
- Проверьте, включены ли дополнительные символы.
Если эти символы были включены, удалите их и снова вставьте строку подключения.
Надеюсь, это поможет кому-то в будущем. В моей строке подключения были пустые значения, заключенные в двойные кавычки, например User ID="". Поэтому, чтобы решить эту проблему, мне пришлось избежать двойных кавычек.
Dim ConString = "Data Source=MYSERVER;User ID="";Initial Catalog=Northwinds..."
ConString = ConString.Replace("""", """""")
Я решил эту проблему, изменив строку подключения в настройках публикации моего ASP.NET Web Api.
Проверьте мой ответ на этот пост: Как исправить ошибку:: Формат строки инициализации не соответствует спецификации, начиная с индекса 0::
В моем случае проблема заключалась в том, что на сервере приложением использовался другой файл appsettings.json.
У меня была такая же ошибка. В моем случае это произошло из-за того, что я пропустил закрывающую цитату для пароля в строке подключения.
Изменено с этого
<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password='password" providerName="System.Data.SqlClient" />
к
<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password='password'" providerName="System.Data.SqlClient" />
В моем случае это было ...
index: 58
но в конечном итоге сгенерированный пароль состоял из одинарной кавычки. SQL Server принял это, но у моей строки подключения возникли проблемы с ее анализом. Надеюсь, это сэкономит кому-то хотя бы несколько минут, потому что это стоило мне часа или двух, прежде чем я осознал, что происходит. ваше здоровье
Сгенерированный мной пароль содержал несколько символов, допустимых в AWS RDS, но по какой-то причине мое приложение .NET не могло его обработать. Решение, которое сработало для меня, заключалось в том, чтобы сгенерировать новый пароль без символов, таких как `(обратная кавычка).
Моя проблема заключалась не в том, что строка подключения, которую я предоставлял, была неправильной или что строка подключения в app.config, которую я думал, что я использовал, была неправильной, а в том, что я использовал неправильный app.config.
У меня возникла та же проблема, я узнал, что при развертывании в IIS строки подключения не были правильно установлены. они были '$(ReplacableToken_devConnection-Web.config Connection String_0) при просмотре строк подключения сайта в IIS, а не фактической строки подключения. Я их там обновил, и все заработало как положено
У меня была такая же проблема целый день. Ошибка точно указывает на проблему со строкой подключения, поскольку индекс 0 является строкой подключения. Моя проблема была в классе запуска. Я использовал:
var connection = Configuration["ConnectionStrings:DefaultConnection"];
services.AddControllersWithViews();
services.AddApplicationInsightsTelemetry();
services.AddDbContextPool<Models.PicTickContext>(options => options.UseSqlServer("connection"));`
что неправильно, вместо этого используйте это:
services.AddControllersWithViews();
services.AddApplicationInsightsTelemetry();
services.AddDbContextPool<Models.PicTickContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
и моя проблема была решена.
В моих строках подключения была опечатка "База данных ==PESitecore1_master"
<add name="master" connectionString="user id=sa;password=xxxxx;Data Source=APR9038KBD\SQL2014;Database==PESitecore1_master"/>
Моя проблема заключалась в том, что я добавил код журнала базы данных в свой конструктор для объекта БД, и это, казалось, вызвало хаос в моем профиле развертывания Azure.
К вашему сведению - я упростил этот пример, в реальном коде это было отключено в производстве (но все еще в коде)
public class MyDB : DbContext
{
public MyDB()
{
this.Database.Log = x => { Debug.WriteLine(x); };
}
}
Я скопировал и вставил конфигурацию строки подключения в свой тестовый проект и начал сталкиваться с этой ошибкой. Строка подключения работала нормально в моем проекте WebAPI. Вот мое исправление.
var connection = ConfigurationManager.ConnectionStrings["MyConnectionString"];
UnitOfWork = new UnitOfWork(new SqlConnection(connection.ConnectionString));
У меня тоже была эта ошибка, и я смог ее решить следующим образом: я ранее записал строку подключения в appsettings.json в созданный мной раздел (ConnectionsStrings (обратите внимание на дополнительные буквы "s") и попытался подключиться к моей базе данных, что вызвало ошибка. Это было приложение ASP.NET CORE, поэтому я хотел подключиться к нему с помощью метода.GetConnectionString (подробности здесь). Кажется, что этот метод неявно ищет строку подключения в разделе "ConnectionStrings", что не не существует. Когда я изменил / исправил его на "ConnectionStrings", он работал, как ожидалось.
Это также происходит, когда вы копируете веб-страницу из одного решения в другое, затем запускаете свое решение и обнаруживаете, что у него есть другое имя строки подключения в webconfig. Затем вы небрежно меняете имя строки подключения на панели свойств в режиме конструктора страницы.
Лучше просто изменить его в части кода, а не в дизайне.
У меня была та же проблема, и, наконец, мне удалось решить ее следующим образом:
Проблема была в определении строки подключения в моем web.config.
<add name="DefaultConnection" connectionString="DefaultConnection_ConnectionString" providerName="System.Data.SqlClient"/>
Вышеописанное прекрасно работало локально, потому что я использовал локальную базу данных, когда управлял пользователями и ролями. Когда я перенес свое приложение в IIS, локальная БД была недоступна, кроме того, я хотел бы использовать свою БД в SQL Server. Поэтому я меняю приведенную выше строку подключения на следующий эквивалент БД SQL Server:
<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"/>
ПРИМЕЧАНИЕ. Выше также предполагается, что вы собираетесь использовать тот же SQL Server из локального блока (в случае, если вы включите его в локальный файл web.config - это именно то, что я и сделал в моем случае).
Для еще одной несчастной души, которая управляет устаревшим приложением веб-форм, которое использует встроенный sqldatasource вместе со строками подключения, хранящимися в web.config, вы можете получить эту ошибку, если получите доступ к своей строке подключения, такой как <%APSDataConnectionString%> вместо < %$ ConnectionStrings:MyConnectionString%>. Это случилось с нами при обновлении.NET с 3.5 до 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>
У меня была эта ошибка, и выяснилось, что причина в том, что я окружил (новый) табличный адаптер с помощью Using / End Using . Просто изменив tableadapter, чтобы он оставался живым дольше (продолжительность класса в моем случае), я исправил это. Может, это кому-то поможет.
Вы должны использовать то же имя класса, что и унаследованный от DbContext.
Пример: обратите внимание, что имя класса: "CreativeFormDbContext"
public class CreativeFormDbContext : DbContext
{
public DbSet<Person> Persons { get; set; }
}
app.config: свойство name - CreativeFormDbContext.
<connectionStrings>
<add name="CreativeFormDbContext" providerName="MySql.Data.MySqlClient"
connectionString="Server=localhost;Database=creativeform;Uid=username;Pwd=pass"/>
</connectionStrings>