2013-10-29 31 views
0

我有一个类库,其中包含由asp.net Web应用程序和WCF Web服务共享的类。库中的类需要从数据库中检索信息,因此库在连接字符串的app.config中有一个条目,并且有一个方法用于检索该连接字符串。无法从app.config获取连接字符串

以下是我声明我的连接字符串中的app.config:

<configuration> 
    <connectionStrings> 
     <add name="connstring" 
      connectionString="Data Source=MYSERVER;Initial Catalog=MY_DB;User Id=mylogin;Password=mypassword;" 
      providerName="System.Data.SqlClient"/> 
    </connectionStrings> 
    [...] 
</configuration> 

而这里的检索连接字符串的方法:

Imports System.Configuration 
Imports System.Data.SqlClient 
Imports System.Data.OleDb 

Public Module modGen 

    Public Function gGetConnectionString() As String 

     Dim conn As ConnectionStringSettings = ConfigurationManager.ConnectionStrings("connstring") 
     Dim connString As String = conn.ConnectionString 
     Return connString 

    End Function 

的问题是,该方法运行时, ,“conn”的值为“Nothing”,然后引发以下异常:

System.TypeInitializationException was caught 
    Message=The type initializer for 'CHK.TRK.CLS.modGen' threw an exception. 
    Source=CHK.TRK.CLS 
    TypeName=CHK.TRK.CLS.modGen 
    StackTrace: 
     at CHK.TRK.CLS.modGen.gGetConnectionString() 
     at CHK.TRK.CLS.modAuth.CheckUser(String logon, String pwHash) in H:\WorkSpace\CHKTRK\CHKTRK\CHKTRKClasses\Mod\modAuth.vb:line 141 
     at CHK.TRK.CLS.modAuth.Authenticate(String logon, String pwhash) in H:\WorkSpace\CHKTRK\CHKTRK\CHKTRKClasses\Mod\modAuth.vb:line 9 
     at CHKTRKWebService.CheckTrackService.Authenticate(String login, String pwHash) in H:\WorkSpace\CHKTRK\CHKTRK\CHKTRKWebService\CheckTrackService.svc.vb:line 20 
    InnerException: System.NullReferenceException 
     Message=Object reference not set to an instance of an object. 
     Source=CHK.TRK.CLS 
     StackTrace: 
      at CHK.TRK.CLS.modGen..cctor() in H:\WorkSpace\CHKTRK\CHKTRK\CHKTRKClasses\Mod\modGen.vb:line 138 
     InnerException: 

在app.config文件中声明我的连接字符串的方式是否有问题,或者使用检索它的方法吗?

回答

1

将连接字符串添加到您的asp.net应用程序的web.config

您可以检查给here

+0

它已经在两个asp.net应用程序的Web.config和WCF服务。它和三个配置文件具有相同的名称。 – ZipionLive

+0

你已经提到这个连接字符串在库的app.config中。你确定它也存在于web.config中吗? –

+1

是的,它在web应用程序的web.config中以完全相同的方式声明。 – ZipionLive

1

解决方案添加连接字符串是这样的:ConfigurationManager.ConnectionStrings Property

示例代码:

Public Shared Sub ReadConnectionStrings() 

    ' Get the ConnectionStrings collection. 
    Dim connections _ 
     As ConnectionStringSettingsCollection = _ 
      ConfigurationManager.ConnectionStrings 

    If connections.Count <> 0 Then 
     Console.WriteLine() 
     Console.WriteLine(_ 
      "Using ConnectionStrings property.") 
     Console.WriteLine(_ 
      "Connection strings:") 

     ' Get the collection elements. 
     For Each connection _ 
      As ConnectionStringSettings In connections 
      Dim name As String = connection.Name 
      Dim provider As String = _ 
       connection.ProviderName 
      Dim connectionString As String = _ 
       connection.ConnectionString 

      Console.WriteLine(_ 
       "Name:    {0}", name) 
      Console.WriteLine(_ 
       "Connection string: {0}", _ 
        connectionString) 
      Console.WriteLine(_ 
       "Provider:   {0}", provider) 
     Next 
    Else 
     Console.WriteLine() 
     Console.WriteLine(_ 
      "No connection string is defined.") 
     Console.WriteLine() 
    End If 
End Sub 
+0

这不是真正的答案,但它无论如何帮助了我很多,谢谢! – ZipionLive

+0

雅这不是真实的,但这是示例代码为获取想法abot如何获取连接字符串 –

相关问题