Mam aplikację ASP.Net, która działa dobrze na moim lokalnym komputerze deweloperskim.
Kiedy uruchamiam tę aplikację online, wyświetla następujący błąd
Format ciągu inicjalizacyjnego nie jest zgodny ze specyfikacją zaczynającą się od indeksu 0
Mam aplikację ASP.Net, która działa dobrze na moim lokalnym komputerze deweloperskim.
Kiedy uruchamiam tę aplikację online, wyświetla następujący błąd
Format ciągu inicjalizacyjnego nie jest zgodny ze specyfikacją zaczynającą się od indeksu 0
Odpowiedzi:
Sprawdź parametry połączenia. Jeśli potrzebujesz pomocy, sprawdź Parametry Połączenia , które zawierają listę najczęściej używanych.
Często używane ciągi połączeń:
Standardowe zabezpieczenia
Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;
Zaufane połączenie
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;
Połączenie z instancją SQL Server
Składnia nazwy serwera / instancji używana w opcji serwera jest taka sama dla wszystkich parametrów połączenia programu SQL Server.
Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;
Password=myPassword;
Standardowe zabezpieczenia
Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;
Zaufane połączenie
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;
Połączenie z instancją SQL Server
Składnia nazwy serwera / instancji używana w opcji serwera jest taka sama dla wszystkich parametrów połączenia programu SQL Server.
Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;Password=myPassword;
Standard
Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
Określanie portu TCP
Server=myServerAddress;Port=1234;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
Korzystanie z TNS
Data Source=TORCL;User Id=myUsername;Password=myPassword;
Korzystanie ze zintegrowanych zabezpieczeń
Data Source=TORCL;Integrated Security=SSPI;
Korzystanie z ODP.NET bez 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;
To może komuś pomóc ... Moje hasło zawierało średnik, więc napotkałem ten problem. Dodałem więc hasło w cudzysłowie. To był naprawdę głupi błąd.
Zmieniłem następujące:
<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password=pass;word" providerName="System.Data.SqlClient" />
do
<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password='pass;word'" providerName="System.Data.SqlClient" />
Ustaw projekt zawierający DbContextklasę jako projekt startowy.
Otrzymałem ten błąd podczas dzwonienia enable-migrations. Nawet jeśli w polu Package Manager Consolewybrałem prawo Default project, nadal patrzył na plik web.config tego projektu startowego, w którym nie było parametrów połączenia.
Miałem ten sam problem. Lokalnie strona działała dobrze, ale na lazurowym nie powiodłaby się z powyższym komunikatem.
okazuje się, że problem polegał na ustawieniu ciągu połączenia w ctor, na przykład:
public DatabaseContext()
{
Database.Connection.ConnectionString = ConfigurationManager.ConnectionStrings["db"].ConnectionString;
}
NIE działa, to będzie:
public DatabaseContext() : base("db")
{
}
Bije mnie
Sprawdź parametry połączenia, tak jak zapomniałem dodać services.AddDbContext<dbsContext>(options => options.UseSqlServer("Default"));
Powoduje błąd i tutaj jak dodam Configuration.GetConnectionStringto rozwiązuje problem
jak teraz połączenie to:
services.AddDbContext<dbsContext>(options => options.UseSqlServer(Configuration.GetConnectionString("Default")));
działa dobrze (ten problem został rozwiązany dla .net core)
Rozwiązałem ten problem, zmieniając parametry połączenia w ustawieniach publikowania mojego interfejsu API sieci Web ASP.NET.
Sprawdź moją odpowiedź w tym poście: Jak naprawić błąd :: Format ciągu inicjalizacyjnego nie jest zgodny ze specyfikacją zaczynającą się od indeksu 0 ::
Miałem ten sam błąd. W moim przypadku było to spowodowane brakiem cudzysłowu zamykającego hasło w ciągu połączenia.
Zmieniono z tego
<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password='password" providerName="System.Data.SqlClient" />
Do
<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password='password'" providerName="System.Data.SqlClient" />
Dzieje się tak również, gdy kopiujesz stronę internetową z jednego rozwiązania do drugiego, a następnie uruchamiasz rozwiązanie i dowiadujesz się, że ma ono inną nazwę ciągu połączenia w konfiguracji webconfig. Następnie beztrosko zmieniasz nazwę ciągu połączenia w panelu właściwości w widoku projektu strony.
Lepiej po prostu zmienić to w części kodu zamiast projektu.
Mój problem polegał na tym, że dodałem kod rejestrowania bazy danych do mojego konstruktora dla obiektu DB i wydawało się, że spowodowało to spustoszenie w moim profilu wdrażania Azure.
FYI - uprościłem ten przykład, w prawdziwym kodzie to zostało wyłączone w produkcji (ale nadal w kodzie)
public class MyDB : DbContext
{
public MyDB()
{
this.Database.Log = x => { Debug.WriteLine(x); };
}
}
Wystąpiła literówka w moich parametrach połączenia „Baza danych == PESitecore1_master”
<add name="master" connectionString="user id=sa;password=xxxxx;Data Source=APR9038KBD\SQL2014;Database==PESitecore1_master"/>
Miałem ten sam problem i ostatecznie udało mi się go rozwiązać w następujący sposób:
Problem dotyczył definicji parametrów połączenia w moim pliku web.config.
<add name="DefaultConnection" connectionString="DefaultConnection_ConnectionString" providerName="System.Data.SqlClient"/>
Powyższe działało idealnie lokalnie, ponieważ korzystałem z lokalnej bazy danych podczas zarządzania użytkownikami i rolami. Kiedy przeniosłem swoją aplikację do IIS, lokalna baza danych nie była już dostępna, dodatkowo chciałbym używać mojej bazy danych w SQL Server. Więc zmieniam powyższe parametry połączenia na następujący odpowiednik bazy danych 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"/>
UWAGA: Powyższe również załóżmy, że zamierzasz użyć tego samego SQL Server z twojego lokalnego pudełka (w przypadku, gdy włączysz go do lokalnego web.config - dokładnie to zrobiłem w moim przypadku).
Miałem ten sam problem, doszedłem do wniosku, że wdrożenie do IIS nie ustawiło poprawnie parametrów połączenia. były one „$ (ReplacableToken_devConnection-Web.config Connection String_0)” podczas wyświetlania parametrów połączenia witryny w usługach IIS, zamiast rzeczywistych parametrów połączenia. Zaktualizowałem je tam i wszystkie działały zgodnie z oczekiwaniami
Skopiowałem i wkleiłem konfigurację parametrów połączenia do projektu testowego i uruchomiłem ten błąd. Parametry połączenia działały dobrze w moim projekcie WebAPI. Oto moja poprawka.
var connection = ConfigurationManager.ConnectionStrings["MyConnectionString"];
var unitOfWork = new UnitOfWork(new SqlConnection(connection.ConnectionString));
Usunąłem & quot; na końcu parametrów połączenia i zadziałało
Zamiast
App=EntityFramework"
Używany
App=EntityFramework;
<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" />
Uwaga: w ciągu connectionString nie uwzględniaj:
| x | Informacje o metadanych: "metadata = res: // * /"
| x | Zakodowane cytaty: „” ”
Czasami usługa Sql Server nie została uruchomiona. Może to spowodować błąd. Przejdź do Usługi i uruchom Sql Server. To powinno zadziałać.

Dla drugiej niefortunnej duszy, która zarządza starszą aplikacją formularzy internetowych, która używa wbudowanego źródła sqldatasource, wraz z parametrami połączenia przechowywanymi w web.config, możesz otrzymać ten błąd, jeśli uzyskasz dostęp do parametrów połączenia, takich jak <% APSDataConnectionString%> zamiast < % $ ConnectionStrings: MyConnectionString%>. Zdarzyło się to nam podczas aktualizacji .NET z 3.5 do 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>
W moim przypadku problem polegał na tym, że na serwerze aplikacja używała innego pliku appsettings.json.
W moim przypadku mam podobny błąd:
Aplikacja zgłosiła nieobsługiwany wyjątek. System.ArgumentException: Format ciągu inicjującego nie jest zgodny ze specyfikacją zaczynającą się od indeksu 91.
Zmieniam parametry połączenia z:
Server = .; Baza danych = nazwa_db; Identyfikator użytkownika = myuserid; Hasło = mojehasło ”
do:
Server = .; Baza danych = nazwa_db; Identyfikator użytkownika = myuserid; Hasło = 'mojehasło' ”
i działa, dodałem pojedyncze cudzysłowy do hasła.
Miałem również ten błąd i mogłem go rozwiązać w następujący sposób: wcześniej napisałem ciąg połączenia do pliku appsettings.json w sekcji, którą utworzyłem (ConnectionsStrings (zauważ dodatkowe „s”) i próbowałem połączyć się z moją bazą danych, co spowodowało To była aplikacja ASP.NET CORE, więc chciałem się z nią połączyć za pomocą metody .GetConnectionString (szczegóły na ten temat tutaj ). Wygląda na to, że ta metoda niejawnie wyszukuje ciąg połączenia w sekcji „ConnectionStrings”, co nie nie istnieje. Kiedy zmieniłem / poprawiłem go na „ConnectionStrings”, działało zgodnie z oczekiwaniami.
Jak wiem, ilekroć masz więcej niż 1 ciąg połączenia w swoim rozwiązaniu (Twój bieżący projekt, projekt startowy, ...), możesz napotkać ten błąd
to łącze może pomóc w kliknięciu