Как исправить ошибку:: Формат строки инициализации не соответствует спецификации, начинающейся с индекса 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);...

Ответ 1

Это может помочь узнать, что такое фактическая строка подключения. Добавить в Global.asax:

throw new Exception(ConfigurationManager.ConnectionStrings["mcn"].ConnectionString);

Если фактическая строка соединения $(ReplacableToken_mcn-Web.config Connection String_0), это объясняет проблему.

Ответ 2

Я столкнулся с той же проблемой и выяснил, что в моей строке соединения был добавлен дополнительный символ двойной кавычки в середине строки подключения.

Ответ 3

Я изначально вызывал значение строки подключения, как показано ниже (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

Ответ 4

У меня это было в VS2015, и мое исправление заключалось в том, чтобы изменить первую строку в моем WebConfig из

<?xml version="1.0" encoding="utf-8"?>

к

<?xml version="1.0"?>

Любопытный.

Ответ 5

У меня была такая же проблема при доступе к опубликованному ASP.NET Web Api. В моем случае я понял, что когда я собирался опубликовать Web Api, я не указал строку подключения в разделе "Базы данных":

После использования трехточечной кнопки строка подключения будет отображаться в текстовом поле на левый

Итак, я сгенерировал его с помощью трехточечной кнопки, и после публикации он работал.

Что странно, так это то, что в течение долгого времени я уверен, что в этой конфигурации нет строки соединения, но она все еще работает.

Ответ 6

Другая ошибка заключается в том, что connectionString иногда ссылается на имя строки подключения в app/web-config, а иногда на фактическую строку соединения и наоборот.

Очень легко исправить, но иногда трудно определить.

Ответ 7

Моя проблема заключалась в том, что мой файл web.config содержал ссылку на соединение с удаленной сущностью, поэтому проверьте, нет ли устаревших строк подключения.

Ответ 8

При попытке запустить приложение я получил ошибку ниже:

Формат строки инициализации не соответствует спецификации, начинающейся с индекса 57.

И во время моего исследования я нашел этот стек, и я смог исправить эту ошибку, посмотрев файл конфигурации сети и обнаружив, что в passowrd есть дополнительная строка. Как только я удалил строку, я смог получить доступ к веб-сайту без каких-либо ошибок.

Ответ 9

Я получал это исключение, исправил его, добавив throwIfV1Schema: false в свой конструктор DbContext:

public class AppDb : IdentityDbContext<User>
{
    public AppDb()
        : base("DefaultConnection", throwIfV1Schema: false)
    {
    }
}

Ответ 10

Для тех, кто может наткнуться на этот поток, пытаясь исправить ту же ошибку, которая возникает при запуске 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 уже существует.

Ответ 11

Я потратил 1,5 рабочих дня на эту ошибку, и в конце концов коллега решил проблему, заменив User Id на Uid и пароль Pwd. Обновленная строка подключения для .Net была для меня ошибкой

Ответ 12

Ни одно из перечисленных решений в этой теме не работало для меня. Я начал получать эту ошибку после внесения некоторых изменений в строку строк подключения файла web.config. (Мое приложение подключается к нескольким базам данных.) Я тщательно изучил, какие изменения я сделал, понял, что я удалил тег в верхней части списка. Я вернул тег в верхней части списка строк подключения, и проблема сразу исчезла. Этот сайт, получивший ошибку, представляет собой приложение, которое находится ниже основного сайта (https://www.domain.org/MySite). Это может не решить проблему для всех, но она решила проблему для меня.

Ответ 13

В ApplicationDbContext.cs - у меня была опечатка в строке подключения. : (

Ответ 14

Нежелательная одиночная кавычка была моей проблемой. Проверка строки подключения из местоположения индекса, упомянутого в строке ошибки, помогла мне выявить проблему.

Ответ 15

В моем случае виновником была точка с запятой и двойные кавычки в пароле для базы данных prod. Наша ИТ-команда использует некоторый инструмент для генерации паролей, поэтому он сгенерировал один с точкой с запятой и двойными кавычками Connectionstring выглядит как

<add key="BusDatabaseConnectionString" value="Data Source=myserver;Initial Catalog=testdb;User Id=Listener;Password=BlaBla"';[]qrk/>

Получил пароль, и он сработал.

Ответ 16

Если вы используете EF и Publish Profiles, вы можете иметь пустую строку строки подключения в своем публичном профиле. Раздражает, но вполне возможно.