ConnectionString 속성이 초기화되지 않았습니다."를 수정하는 방법
애플리케이션을 시작하면 다음과 같은 메시지가 표시됩니다.연결 문자열 속성이 초기화되지 않았습니다.
Web.config:
<connectionStrings>
<add name="MyDB"
connectionString="Data Source=localhost\sqlexpress;Initial Catalog=mydatabase;User Id=myuser;Password=mypassword;" />
</connectionStrings>
스택은 다음과 같습니다.
System.Data.SqlClient.SqlConnection.PermissionDemand() +4876643
System.Data.SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection outerConnection) +20
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +117
System.Data.SqlClient.SqlConnection.Open() +122
저는 꽤 생소합니다.NET과 저는 이것을 이해하지 못합니다.저는 구글에서 많은 답을 찾았지만, 아무도 제 문제를 해결하지 못했습니다.
그게 무슨 의미죠?내 web.config가 나쁜가요?제 기능이 안 좋은가요?SQL 구성이 제대로 작동하지 않는 것입니까(sqexpress 사용)?
여기서 제 주된 문제는 어디서부터 디버깅을 시작해야 할지 모른다는 것입니다.뭐든 도움이 될 겁니다
편집:
오류 코드:
MySQLHelper.ExecuteNonQuery(
ConfigurationManager.AppSettings["ConnectionString"],
CommandType.Text,
sqlQuery,
sqlParams);
sqlQuery는 "select * from table"과 같은 쿼리입니다. sqlParams는 여기서 관련이 없습니다.
여기서 또 다른 문제는 회사에서 MySQLHelper를 사용하고 있으며 이에 대한 가시성이 없다는 것입니다(헬퍼 lib용 dll만 있음).다른 프로젝트에서도 잘 작동하고 있기 때문에 여기서 오류가 발생하지 않는 것이 99%라고 생각합니다.
코드를 보지 않고 디버깅할 방법이 없다면 코드를 얻기 위해 이 도우미를 만든 사람에게 연락하기 위해 기다려야 할 것 같습니다.
연결 문자열을 참조하는 작업은 다음과 같이 수행해야 합니다.
MySQLHelper.ExecuteNonQuery(
ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString,
CommandType.Text,
sqlQuery,
sqlParams);
ConfigurationManager.AppSettings["ConnectionString"]
안을 들여다보고 있을 것입니다.AppSettings
라는 이름의 것 때문에.ConnectionString
발견하지 못할 것입니다.가 " 이것당오메표가이시다유니입된지시이류의"로 표시된 이유입니다."ConnectionString" property has not been initialized
초기화된 속성을 찾고 있기 때문입니다.AppSettings
이름 지어진ConnectionString
.
ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString
이름이 "MyDB"인 연결 문자열을 찾도록 지시합니다.
web.config 연결 문자열 사용에 대해 이야기하는 사람이 있습니다.
데이터 원본이 데이터에 바인딩하려고 하지만 연결 문자열을 찾을 수 없기 때문에 바인딩할 수 없는 경우 이 오류가 발생합니다.제 경험에 따르면, 이것은 일반적으로 web.config의 오류 때문이 아닙니다(이것에 대해 100% 확신은 없지만).
데이터 소스(예: SqlDataSource)를 프로그래밍 방식으로 할당하거나 쿼리를 생성하는 경우(예: SqlConnection/SqlCommand 조합 사용) 연결 문자열을 할당했는지 확인합니다.
var connection = new SqlConnection(ConfigurationManager.ConnectionStrings[nameOfString].ConnectionString);
데이터 원본(예: GridView 또는 ComboBox에서 SqlDataSource로)에 데이터 바인딩 요소를 연결하는 경우 데이터 원본이 연결 문자열 중 하나에 할당되어 있는지 확인합니다.
(데이터 바인딩 요소와 web.config가 안전하도록) 코드를 게시하면 확인할 수 있습니다.
편집: AppSettings 영역에서 연결 문자열을 가져오려고 하는데 프로그래밍 방식으로 연결 문자열이 존재하지 않는 것이 문제라고 생각합니다.로 대체해 보십시오.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString
(ConnectionString이 연결 문자열의 이름인 경우).
연결 문자열이 AppSettings에 없습니다.
찾고 있는 것은 다음과 같습니다.
System.Configuration.ConfigurationManager.ConnectionStrings["MyDB"]...
웹 api As Net Core 프로젝트를 진행하던 중 같은 문제에 걸려 넘어졌습니다.코드의 참조를 다음으로 변경하라는 제안을 따릅니다.
ConfigurationManager.ConnectionStrings["NameOfTheConnectionString"].ConnectionString
시스템에 참조를 추가합니다.configuration.dll로 인해 "Reference not valid or not supported" 오류가 발생했습니다.
문제를 해결하기 위해 패키지를 다운로드해야 했습니다.System.Configuration.ConfigurationManager
NuGet 사용(툴 -> Nugget 패키지 -> 솔루션의 Nugget 패키지 관리
내가 만들 때 발견한 것은Sqlconnection = new SqlConnection()
나는 나의 것을 패스하는 것을 잊었습니다.connectionString
변수.그래서 초기화 방법을 변경했습니다.connectionString
(변경 사항 없음).
그리고 만약 당신이 나를 좋아한다면 당신의 끈 연결을 잊지 마세요.SqlConnection
매개 변수
Sqlconnection = new SqlConnection("ConnString")
이것이 저에게 효과가 있었습니다.
var oSQLConn = new
SqlConnection(
System.Configuration.ConfigurationManager.ConnectionStrings["Conn1"].ToString()
);
위에서 언급한 모든 답변을 시도한 경우 잘못된 SQL 연결 확인 조건을 기반으로 새 SQL 연결을 생성할 수 있습니다.다음은 시나리오입니다.
이전에 초기화되지 않은 경우 새 SQL 연결을 반환하는 일반적인 방법입니다. 그렇지 않으면 기존 연결이 반환됩니다.
public SqlConnection GetSqlconnection()
{
try
{
if(sqlConnection!=null)
{
sqlConnection = new SqlConnection(WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
}
return sqlConnection;
}catch(Exception e )
{
WriteLog.WriteErrorLog(log, "GetSqlconnection() | ", e.Message, e.StackTrace);
throw e;
}
// return sqlConnection;
}
//here two methods which are using above GetSqlconnection() method
public void getUser()
{
//call to GetSqlconnection() method to fetch user from db
//connection.open()
//query execution logic will be here
//connection.close() <---here is object state changed --->
}
public void getProduct()
{
//call to GetSqlconnection() method with no connection string properties
//connection.open() ; <--- here exception will be thrown as onnectionstring-property-has-not-been-initialized
//query execution logic will be here .
//connection.close().
}
getUser() 메서드에서 연결을 닫자마자 sqlconnection 개체 1에서 두 가지 변경 사항이 발생합니다.상태가 '열림'에서 '닫힘' 2로 변경되었습니다.ConnectionString 속성이 ""로 변경됩니다.
따라서 GetSqlconnection()의 if-Condition에 따라 getProduct()에서 GetSqlconnection() 메서드를 호출하면 이 메서드는 sqlConnection의 기존 개체를 반환하지만 상태는 'Closed'이고 ConnectionString은 "."이므로 connection.open()에서는 연결 문자열이 비어 있으므로 예외를 던집니다.
sqlConnection을 재사용하는 동안 이 문제를 해결하려면 GetSqlconnection() 메서드에서 아래와 같이 확인해야 합니다.
try
{
if(sqlConnection==null || Convert.ToString(sqlConnection.State)=="Closed")
{
sqlConnection = new SqlConnection(WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
}
return sqlConnection;
}catch(Exception e )
{
WriteLog.WriteErrorLog(log, "GetSqlconnection() | ", e.Message, e.StackTrace);
throw e;
}
저의 경우, "ConnectionStrings"라는 단어에서 한 글자도 누락되어 appsettings.json 속성과 일치하지 않아 이러한 오류가 발생했습니다.오류는 생각만큼 깊을 수 없습니다.맞춤법 오류로 디버깅을 시작합니다.
이 문제를 정확하게 해결할 수도 없고 조사할 시간도 없었지만, 제 경우 Windows Server 2012 R2 또는 프레임워크 버전과 관련이 있었습니다.다른 Windows 버전을 실행하는 다른 컴퓨터에서도 동일한 코드, 앱 및 구성 파일이 완벽하게 작동했습니다.최소한 소비자 버전(Windows 8, 10 및 11)을 사용해 봅니다.윈도우즈 Server 2012만 거부하고 다음 오류가 발생했습니다.
System.Data.SqlClient.SqlConnection.PermissionDemand()
.cs에서 다음과 합니다. 예: startup.cs 에서다 연문제다니공합.services.Configure<Readconfig>(Configuration.GetSection("ConnectionStrings"));
Appsetting.json 및 Program.cs 의 연결 문자열이 같을 수 없습니다.
아래 예와 같이 () 대신 []를 사용합니다.
SqlDataAdapter adapter = new SqlDataAdapter(sql, ConfigurationManager.ConnectionStrings["FADB_ConnectionString"].ConnectionString);
DataTable data = new DataTable();
DataSet ds = new DataSet();
언급URL : https://stackoverflow.com/questions/1007786/how-to-fix-the-connectionstring-property-has-not-been-initialized
'bestsource' 카테고리의 다른 글
이미지의 확대/축소 기능을 얻으려면 어떻게 해야 합니까? (0) | 2023.08.07 |
---|---|
php SimpleXML 하위 항목이 존재하는지 확인 (0) | 2023.08.07 |
왜 ngOnInit가 두 번 호출됩니까? (0) | 2023.08.07 |
조건부 UPDATE MariaDB(MySQL) (0) | 2023.08.07 |
선택한 워크시트를 excel 파일에서 pdf로 파이썬으로 인쇄 (0) | 2023.08.07 |