로컬 개발 컴퓨터에서 잘 실행되는 ASP.Net 응용 프로그램이 있습니다.
이 응용 프로그램을 온라인으로 실행하면 다음 오류가 표시됩니다
초기화 문자열의 형식이 인덱스 0에서 시작하는 사양을 준수하지 않습니다
로컬 개발 컴퓨터에서 잘 실행되는 ASP.Net 응용 프로그램이 있습니다.
이 응용 프로그램을 온라인으로 실행하면 다음 오류가 표시됩니다
초기화 문자열의 형식이 인덱스 0에서 시작하는 사양을 준수하지 않습니다
답변:
연결 문자열을 확인하십시오. 도움이 필요하면 일반적으로 사용되는 목록이있는 Connection Strings를 확인하십시오 .
일반적으로 사용되는 연결 문자열 :
표준 보안
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;
표준 보안
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;
표준
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;
tnsnames.ora없이 ODP.NET 사용
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" />
나는 같은 문제가 있었다. 로컬로 사이트가 제대로 실행되었지만 하늘빛으로 인해 위의 메시지가 표시되지 않습니다.
문제는 다음과 같이 ctor에서 연결 문자열을 설정하는 것으로 나타났습니다.
public DatabaseContext()
{
Database.Connection.ConnectionString = ConfigurationManager.ConnectionStrings["db"].ConnectionString;
}
작동하지 않습니다.
public DatabaseContext() : base("db")
{
}
나를 때리는 ..
추가하는 것을 잊어 버린 것처럼 연결 문자열을 확인하십시오. services.AddDbContext<dbsContext>(options => options.UseSqlServer("Default"));
오류가 발생하고 여기에 추가 Configuration.GetConnectionString
하면 문제가 해결됩니다.
지금처럼 연결은 다음과 같습니다
services.AddDbContext<dbsContext>(options => options.UseSqlServer(Configuration.GetConnectionString("Default")));
잘 작동합니다 (이 문제는 .net 코어에서 해결되었습니다)
ASP.NET Web Api의 게시 설정에서 연결 문자열을 변경하여이 문제를 해결했습니다.
이 게시물에 대한 내 대답을 확인하십시오. 오류 수정 방법 :: 초기화 문자열의 형식이 인덱스 0에서 시작하는 사양을 준수하지 않습니다 ::
나는 같은 오류가 있었다. 제 경우에는 연결 문자열에 암호에 대한 닫는 따옴표가 없기 때문입니다.
이 변경
<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" />
나는 같은 문제가 있었고 마침내 다음과 같은 방법으로 문제를 해결할 수있었습니다.
내 web.config의 연결 문자열 정의에 문제가 있습니다.
<add name="DefaultConnection" connectionString="DefaultConnection_ConnectionString" providerName="System.Data.SqlClient"/>
위의 내용은 사용자와 역할을 관리 할 때 로컬 데이터베이스를 사용했기 때문에 완벽하게 작동했습니다. 내 응용 프로그램을 IIS로 전송할 때 로컬 DB에 더 이상 액세스 할 수 없었으며 또한 SQL Server에서 DB를 사용하고 싶습니다. 따라서 위의 연결 문자열을 다음 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"/>
참고 : 위의 내용은 로컬 상자에서 동일한 SQL Server를 사용한다고 가정합니다 (이를 로컬 web.config에 통합하는 경우-필자의 경우 정확히 한 것입니다).
나는 같은 문제가 있었는데, IIS 배포가 연결 문자열을 올바르게 설정하지 않았다는 것을 알게되었습니다. 실제 연결 문자열 대신 IIS에서 사이트의 연결 문자열을 볼 때 '$ (ReplacableToken_devConnection-Web.config Connection String_0)'이었습니다. 나는 그것들을 거기에서 업데이트했고, 모두 예상대로 일했다.
연결 문자열 끝에서 & quot를 제거하고 작동했습니다.
대신에
App=EntityFramework"
익숙한
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" />
참고 : connectionString에서 다음을 포함하지 마십시오.
| x | 메타 데이터 정보 : "metadata = res : // * /"
| x | 인코딩 된 따옴표 : "" "
web.config에 저장된 연결 문자열과 함께 인라인 sqldatasource를 사용하는 레거시 webforms 응용 프로그램을 관리하는 다른 불행한 영혼의 경우 <대신에 <% 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>
제 경우에는 서버에서 다른 appsettings.json 파일이 응용 프로그램에서 사용되었다는 것이 문제였습니다.
내 경우에는 비슷한 오류가 발생했습니다.
응용 프로그램에서 처리되지 않은 예외가 발생했습니다. System.ArgumentException : 초기화 문자열의 형식이 인덱스 91에서 시작하는 사양을 준수하지 않습니다.
연결 문자열을 다음에서 변경합니다.
서버 = .; 데이터베이스 = dbname; 사용자 ID = myuserid; 비밀번호 = mypassword "
에:
서버 = .; 데이터베이스 = dbname; 사용자 ID = myuserid; 비밀번호 = 'mypassword' "
작동하며 암호에 작은 따옴표를 추가했습니다.
나는이 오류도 있었고 다음과 같이 해결할 수 있었다 : 나는 이전에 appsettings.json에 연결 문자열을 내가 작성한 섹션 (ConnectionsStrings (추가 "s")에 작성하고 내 데이터베이스에 연결하려고 시도했다. ASP.NET CORE 응용 프로그램이므로 .GetConnectionString 메서드를 사용하여 연결하고 싶었습니다 (자세한 내용은 여기 참조 ).이 메서드는 "ConnectionStrings" 섹션에서 연결 문자열을 암시 적으로 검색하는 것 같습니다. 존재하지 않습니다. "ConnectionStrings"로 변경 / 수정했을 때 예상대로 작동했습니다.