문제

응용 프로그램을 시작하면 다음을 얻습니다. 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를 처음 접했고 이것을 얻지 못합니다. Google에서 많은 답변을 찾았지만 실제로 내 문제를 해결하지 못했습니다.

그게 무슨 뜻입니까? 내 web.config가 나쁜가요? 내 기능이 나쁜가요? 내 SQL 구성이 올바르게 작동하지 않습니까 (SqlexPress를 사용하고 있습니까)?

여기서 나의 주요 문제는 이것을 어디서 디버그 해야할지 잘 모르겠다는 것입니다 ... 어떤 것이 도움이 될 것입니다.

편집하다:

Failling 코드 :

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"] would be looking in the AppSettings 이름이 지정된 것 ConnectionString, 찾지 못할 것입니다. 이것이 오류 메시지가 표시된 이유입니다 "ConnectionString" property has not been initialized, 초기화 된 속성을 찾고 있기 때문에 AppSettings 명명 된 ConnectionString.

ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString "mydb"라는 연결 문자열을 찾도록 지시합니다.

다음은 Web.Config Connection Strings를 사용하는 것에 대해 이야기하는 사람입니다

다른 팁

데이터 소스가 데이터에 바인딩하려고 시도하지만 연결 문자열을 찾을 수 없기 때문에이 오류가 발생합니다. 내 경험상, 이것은 일반적으로 web.config의 오류 때문이 아닙니다 (100% 확실하지는 않지만).

프로그래밍 방식으로 데이터 소스 (예 : SQLDATASOURCE)를 할당하거나 쿼리를 작성하는 경우 (예 : SQLConnection/SQLCommand 조합을 사용하여) ConnectionString을 할당해야합니다.

SqlConnection myCon = new SqlConnection(ConfigurationManager.ConnectionStrings[nameOfString].ConnectionString;

데이터 소스 요소를 데이터 소스에 연결하는 경우 (예 : GridView 또는 ComboBox를 SQLDATASOURCE에 연결) DataSource가 연결 문자열 중 하나에 할당되어 있는지 확인하십시오.

코드를 게시하면 (데이터 라운드 요소 및 Web.Config가 안전하도록)를 게시하면이를 살펴볼 수 있습니다.

편집하다: 문제는 AppSettings 영역에서 연결 문자열을 얻으려고 노력하고 있으며 프로그래밍 방식으로 존재하지 않는 것입니다. 그것을 대체하십시오 ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString (ConnectionString이 연결 문자열의 이름 인 경우)

연결 문자열은입니다 ~ 아니다 안에 AppSettings.

당신이 찾고있는 것은 다음과 같습니다.

System.Configuration.ConfigurationManager.ConnectionStrings["MyDB"]...

아래 예제와 같이 () 대신 []를 사용하십시오.

SqlDataAdapter adapter = new SqlDataAdapter(sql, ConfigurationManager.ConnectionStrings["FADB_ConnectionString"].ConnectionString);
            DataTable data = new DataTable();
            DataSet ds = new DataSet();

페이지 사용 뒤에있는 코드에서 간단히 :-

SqlConnection con = new SqlConnection("Data Source = DellPC; Initial Catalog = Account; user = sa; password = admin");

잘 작동해야합니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top