Как исправить ошибку:: Формат строки инициализации не соответствует спецификации, начиная с индекса 0::
Я загрузил свой сайт на общий хостинг Godaddy. Я могу получить доступ к этой базе данных из моей студии управления. Я не могу получить доступ к этой базе данных с моего сайта. Я получаю следующую ошибку:
Формат строки инициализации не соответствует спецификации, начиная с индекса 0.
Моя строка подключения находится в web.config и выглядит так:
<connectionStrings>
<add name="mcn" connectionString="Data Source=mydatabase.db.8706856.hostedresource.com; Initial Catalog=mydatabase; User ID=username; Password=xyz;" providerName="System.Data.SqlClient" />
</connectionStrings>
В чем причина этой ошибки? Я также пытался написать ...Data Source=(local);...
20 ответов
Это может помочь увидеть, какова фактическая строка подключения. Добавить в Global.asax:
throw new Exception(ConfigurationManager.ConnectionStrings["mcn"].ConnectionString);
Если фактическая строка подключения $(ReplacableToken_mcn-Web.config Connection String_0)
, что бы объяснить проблему.
Я столкнулся с той же проблемой и обнаружил, что в строке подключения есть дополнительный символ двойной кавычки в середине строки подключения.
Для моего случая виновником стала точка с запятой и двойные кавычки в пароле для prod DB. Наша ИТ-команда использует какой-то инструмент для генерации паролей, поэтому он сгенерировал пароль с точкой с запятой и двойными кавычками.
<add key="BusDatabaseConnectionString" value="Data Source=myserver;Initial Catalog=testdb;User Id=Listener;Password=BlaBla"';[]qrk/>
Получил пароль поменялся и все заработало.
Первоначально я вызывал значение строки подключения, как показано ниже (VB.NET), и получил упомянутую ошибку
Using connection As New SqlConnection("connectionStringName")
'// more code would go here...
End Using
добавление ссылки на System.Configuration и обновление моего кода, как показано ниже, было моим решением. Строка подключения не была проблемой, так как другие элементы управления использовали ее без каких-либо проблем (SqlDataSource)
Using connection As New SqlConnection(ConfigurationManager.ConnectionStrings("connectionStringName").ConnectionString)
'// more code would go here...
End Using
У меня возникла та же проблема при доступе к опубликованному ASP.NET Web Api. В моем случае я понял, что когда я собирался опубликовать Web Api, я не указал строку подключения внутри раздела Базы данных:
Поэтому я сгенерировал его с помощью трехточечной кнопки, и после публикации он заработал.
Что странно, так это то, что долгое время я был уверен, что в этой конфигурации не было строки подключения, но она все еще работала.
У меня это было в VS2015, и мое исправление состояло в том, чтобы изменить первую строку в моем WebConfig с
<?xml version="1.0" encoding="utf-8"?>
в
<?xml version="1.0"?>
Любопытно.
Еще одна ловушка заключается в том, что connectionString
иногда ссылается на имя строки подключения в app/web-config, а иногда на саму строку подключения и наоборот.
Очень легко исправить, но иногда трудно определить.
Нежелательная единственная цитата была моей проблемой. Проверка строки подключения из местоположения индекса, указанного в строке ошибки, помогла мне обнаружить проблему.
У меня было то же сообщение об ошибке в моей локальной разработке с моей Visual Studio. Обратите внимание, что все работало при выпуске с Microsoft Release Management (MRM). Я исправил свою ситуацию, изменив начальное значение, которое было ссылкой MRM.
Исходное значение моего App.config было следующим:
<connectionStrings>
<add name="BDORA" connectionString="__token3__" />
</connectionStrings>
Локально, выполнение приложения не может интерпретировать ссылку token3 на ее реальное значение в Tokens.xml. Чтобы это работало на моем локальном хосте, мне пришлось принудительно ввести значение из token3 в Tokens.xml в файл App.config.
Мое исправление было на удивление простым и еще одним очевидным, когда вы понимаете, что сделали. Я вручную строил конфигурацию с использованием.NET Core/Standard следующим образом:
var configurationBuilder = new ConfigurationBuilder();
var root = configurationBuilder.Build();
и забыл включить файл appsettings.json, в котором были мои настройки
configurationBuilder.AddJsonFile("appsettings.json", false);
После добавления все снова заработало.
Для тех, кто может наткнуться на этот поток, пытаясь исправить ту же ошибку, которая возникает в результате выполнения Enable-Migrations
Скорее всего, ни одно из приведенных выше решений не поможет вам (я перепробовал их все).
Я столкнулся с такой же проблемой в Web API 2 после запуска в консоли PM:
Enable-Migrations -EnableAutomaticMigrations -ConnectionString IdentityConnection -ConnectionProviderName System.Data.SqlClient -Force
Я исправил это, изменив его, чтобы фактически использовать ApplicationDbContext
создано в IdentityModels
,
Enable-Migrations -ContextTypeName ApplicationDbContext -EnableAutomaticMigrations -Force
Интересно, что эта ссылка не только ссылается на одну и ту же строку соединения, но и конструктор включает в себя код, который, как сказал 4castle, был потенциальным исправлением (т. Е. throwIfV1Schema: false
предложение.
Обратите внимание, что -Force
Параметр используется только потому, что Configuration.cs
Файл уже существует.
решена вышеописанная ошибка путем добавления конфигурации вместо простого изменения пути к строке
services.AddDbContext<ProductDbContext>(opts => {
opts.UseSqlServer("ConnectionStrings:AppDataConnection");
});
к
services.AddDbContext<ProductDbContext>(opts => {
opts.UseSqlServer(Configuration["ConnectionStrings:AppDataConnection"]);
});
Моя проблема заключалась в том, что в моем файле web.config содержалась ссылка на удаленное соединение с моделью объекта, поэтому проверьте, нет ли устаревших строк соединения.
Я потратил 1,5 рабочих дня на эту ошибку, и в конце концов коллега решил проблему, заменив идентификатор пользователя на Uid и пароль на Pwd. Обновленная строка подключения для.Net стала для меня ошибкой
Это помогло мне в конфигурации. Хотя я не менял свою структуру, Visual Studio 2022, похоже, настояла на этом, как и все остальные изменения.
в разделе автозагрузки
supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"
Я не проверял другие версии, так как сроки выполнения других задач у меня поджимают.
Я получил это исключение, исправил его, добавив throwIfV1Schema: false
в мой конструктор DbContext:
public class AppDb : IdentityDbContext<User>
{
public AppDb()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
}
Ни одно из перечисленных решений в этой теме не сработало для меня. Я начал получать эту ошибку после внесения некоторых изменений в раздел строк подключения файла web.config. (Мое приложение подключается к нескольким базам данных.) Я внимательно изучил внесенные изменения и понял, что удалил тег в верхней части списка. Я восстановил тег в верхней части списка строк подключения, и проблема немедленно исчезла. Этот сайт, который получил ошибку, является приложением, которое находится ниже основного сайта ( https://www.domain.org/MySite). Это может не решить проблему для всех, но это действительно решило проблему для меня.
Если вы используете EF и Publish Profiles, в вашем профиле публикации может быть пустая строка подключения. Раздражает, но вполне возможно.
Я получил ниже ошибку при попытке запустить приложение:
Формат строки инициализации не соответствует спецификации, начиная с индекса 57.
И во время моего исследования я нашел этот стек и смог исправить эту ошибку, просмотрев файл веб-конфигурации и обнаружив, что в passowrd есть дополнительная строка. После того как я удалил строку, я смог получить доступ к сайту без каких-либо ошибок.
Это из-за наличия более одной строки подключения в вашем решении. один для вашего текущего проекта, а другой для запускаемого проекта в вашем Решении. для получения дополнительной информации см. Отчет Telerik не работает
здесь у нас такая же ситуация.