2013-07-05 3 views
0

현재 다음 코드를 사용하여 Web.config 파일에 연결 문자열을 유지하면서 asp.net 4.5에서 SQL Server DB에 연결하려고합니다. 연결 문자열,하지만 retunr의 NULL 값을 검색asp.net 4.5의 Web.config 파일에서 연결 문자열을 가져올 수 없습니다.

ConnectionStringSettings connString = ConfigurationManager.ConnectionStrings["ConString"];     
SqlConnection Con = new SqlConnection(connString.ConnectionString); 

는 null 값을 반환 할 이유가 3.5 I에서, 이전에, 이해하고 있지 않다

<connectionStrings> 
    <add name="ConString" 
    connectionString="Data Source=myservername;Initial Catalog=dbname;User ID=userid;Password=password;Integrated Security=True" 
    xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/> 
</connectionStrings> 

같이있는 Web.Config에 연결 문자열입니다 다음 코드를 사용하여 연결 문자열을 가져 왔습니다.

Con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConString"].ConnectionString); 

잘 작동하는 asp.net 3.5이지만 사용 중에 런타임 오류가 발생합니다. 실수를했는지 알려주세요. 코드 아래

+0

'connString'은 null입니까, 아니면'connString' null의 ConnectionString' 속성입니까? – Tim

+0

런타임 오류 란 무엇입니까? –

+0

오류 Get DataObject 참조에서 개체의 인스턴스로 설정되지 않았습니다. –

답변

3

/일을 확인, 나는 이것을 대답으로 추가하고있다.

1) web.config가 올바른 위치에 있는지 확인해 주시겠습니까?
2) 페이지의 폴더와 동일한 폴더에 web.config (기본 web.config를 덮어 씀)가 있습니까?

+0

큰 도움을 주셔서 감사합니다. –

0

시도 :

string connectionstring = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString.ToString(); 

나는 당신이 ...

+0

ConnectionString 속성 **은 ** 문자열이며 쓸모없는 ToString() 외에도 사용중인 코드입니다. –

+0

이 오류가 발생합니다. "Get In DataObject 참조가 객체의 인스턴스로 설정되지 않았습니다." –

+0

예, 그 것을 잊어 버렸습니다 .. : P –

0

이 코드를 사용 : 도움이되기를 바랍니다. 그것은 우리의 응용 프로그램에서 작동합니다.
그래도 작동하지 않으면 다른 문제가 발생합니다.

Protected Shared strStaticConnectionString As String = Nothing 

    Public Shared Function GetConnectionString() As String 
     Return GetConnectionString(Nothing) 
    End Function 

    ' Requires reference to System.Configuration 
    Public Shared Function GetConnectionString(ByVal strIntitialCatalog As String) As String 
     Dim strReturnValue As String = Nothing 

     If String.IsNullOrEmpty(strStaticConnectionString) Then 
      Dim strConnectionStringName As String = System.Environment.MachineName 

      If String.IsNullOrEmpty(strConnectionStringName) Then 
       strConnectionStringName = "LocalSqlServer" 
      End If 

      ' Walk through the collection and return the first 
      ' connection string matching the connectionString name. 
      Dim settings As System.Configuration.ConnectionStringSettingsCollection = System.Configuration.ConfigurationManager.ConnectionStrings 
      If (settings IsNot Nothing) Then 
       For Each cs As System.Configuration.ConnectionStringSettings In settings 
        If StringComparer.OrdinalIgnoreCase.Equals(cs.Name, strConnectionStringName) Then 
         strReturnValue = cs.ConnectionString 
         Exit For 
        End If 
       Next 
      End If 

      If String.IsNullOrEmpty(strReturnValue) Then 
       strConnectionStringName = "server" 

       Dim conString As System.Configuration.ConnectionStringSettings = System.Configuration.ConfigurationManager.ConnectionStrings(strConnectionStringName) 

       If conString IsNot Nothing Then 
        strReturnValue = conString.ConnectionString 
       End If 
      End If 

      settings = Nothing 
      strConnectionStringName = Nothing 
     Else 
      If String.IsNullOrEmpty(strIntitialCatalog) Then 
       Return strStaticConnectionString 
      End If 

      strReturnValue = strStaticConnectionString 
     End If 

     If String.IsNullOrEmpty(strReturnValue) Then 
      strReturnValue = GetConnectionString_Old() 

      If String.IsNullOrEmpty(strReturnValue) Then 
       Throw New ArgumentNullException("ConnectionString ""server"" in file web.config.") 
      End If 
     Else 
      Dim sb As New System.Data.SqlClient.SqlConnectionStringBuilder(strReturnValue) 

      If String.IsNullOrEmpty(strStaticConnectionString) Then 
       If Not sb.IntegratedSecurity Then 
        sb.Password = DeCrypt(sb.Password) 
       End If 
       strReturnValue = sb.ConnectionString 
       strStaticConnectionString = strReturnValue 
      End If 

      If Not String.IsNullOrEmpty(strIntitialCatalog) Then 
       sb.InitialCatalog = strIntitialCatalog 
      End If 

      strReturnValue = sb.ConnectionString 
      sb = Nothing 
     End If 

     Return strReturnValue 
    End Function ' GetConnectionString 

그런 다음이 web.config 파일

:

<?xml version="1.0"?> 
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> 

    <appSettings> 

    </appSettings> 


    <connectionStrings configSource="connections.config"/> 


    <system.web></system.web> 


    <system.webServer></system.webServer> 

</configuration> 

그리고이 연결 문자열 파일 (connections.config), 이것은 단순한 제안이지만

<?xml version="1.0"?> 
<connectionStrings> 

    <remove name="server"/> 
    <add name="server" connectionString="Data Source=localhost; 
    Initial Catalog=YOUR_DB; 
    Persist Security Info=False; 
    User Id=YOUR_USER; 
    Password=YOUR_PW; 
    MultipleActiveResultSets=False; 
    Packet Size=4096; 
    Application Name=&quot;YOUR_APPLICATION_NAME&quot;" 
    providerName="System.Data.SqlClient"/> 

</connectionStrings> 
+0

이것이 OP 문제에 어떻게 도움이되는지 확신하지 못합니다. 사용중인 코드가 작동해야합니다.흥미 롭긴하지만 당신의 코드는 그들의 문제 (IMO)에 과잉이다 (OP가 C#을 사용하는 것은 말할 것도 없다). – Tim

관련 문제