【问题标题】:Get Connection String from Web.config in asp.net从 asp.net 中的 Web.config 获取连接字符串
【发布时间】:2012-09-19 07:35:18
【问题描述】:

我想知道从asp.net的web.config文件中获取连接字符串的方法。

我只知道下面的方法。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;

    namespace Sherserve.DataAccessLayer
    {
        public class DBGateway
        {
            public static string conString;

            public DBGateway()
            {
                conString = ConfigurationManager.ConnectionStrings["test"].ToString();
            }
        }
    }

【问题讨论】:

  • 应该是ConfigurationManager.ConnectionStrings["test"].ConnectionString;,但这是您获得的唯一正确方法。
  • 那么 conString = ConfigurationManager.ConnectionStrings["test"].ToString(); 有什么问题
  • @Mitch 请参阅this - 你的评论对任何人都没有真正的建设性。
  • @Ammar 关于您的问题 - 完全没有错,现在请查看我的回答我添加了有关此问题的更多信息。
  • @ShadowWizard 我看到了你的答案... :) 你的回答增加了我的编码知识。

标签: c# asp.net database connection-string


【解决方案1】:

使用ConfigurationManager.ConnectionStrings 是唯一正确的方法,要正确使用它并进行健全性检查,您可以拥有这样的代码:

public DBGateway()
{
    ConnectionStringSettings mySetting = ConfigurationManager.ConnectionStrings["test"];
    if (mySetting == null || string.IsNullOrEmpty(mySetting.ConnectionString))
        throw new Exception("Fatal error: missing connecting string in web.config file");
    conString = mySetting.ConnectionString;
}

如果连接字符串丢失,这将引发有用的错误,而不是神秘的“空对象”错误。

值得一提的是ConnectionStringSettings 类正在覆盖ToString() 方法:

public override string ToString()
{
    return this.ConnectionString;
}

所以这意味着使用ConfigurationManager.ConnectionStrings["test"].ToString()ConfigurationManager.ConnectionStrings["test"].ConnectionString 相同,但是您最好执行完整性检查,并且个人使用实际属性看起来更干净,而不是依赖于类来提供它。

【讨论】:

  • conString 来自哪里conString = mySetting.ConnectionString; ??
  • @sam 类的静态字段:public static string conString;,请参阅问题中的代码。
  • @ShadowWizard 在我的情况下代码总是返回 null 并且我的 web.config 中也有连接字符串。
  • @AkashPreet 要么您使用了错误的连接字符串名称,要么您看到的 web.config 不是实际加载的 web.config,例如几个不同的 web.config 文件。否则真的没有办法获得null。
【解决方案2】:

这是整个解决方案:-

string constring = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString;
SqlConnection con = new SqlConnection(constring);
DataSet ds = new DataSet();
try
 {
   SqlDataAdapter dataAdapter = new SqlDataAdapter(query, con);
   SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
   con.Open();
   dataAdapter.Fill(ds, "table");
   return ds;
 }
 catch (Exception ex)
  {
  }
    finally
    {
        if (con.State == System.Data.ConnectionState.Open)
            con.Close();
    }

这就是您可以从数据库中获取记录到数据表中的方法。

希望这就是您想要的。

【讨论】:

  • 我只想要获取连接字符串的方法。
【解决方案3】:

试试

 string ConString = System.Configuration.ConfigurationManager.ConnectionStrings[ConfigurationManager.ConnectionStrings.Count -1].ConnectionString;

【讨论】:

    【解决方案4】:

    我的 WebAssistant 类上有一个方法。 我在 appSettings 上有一个包含我的 WebAppName 的键,请检查以下行:

    <add key="DOMAIN_NAME" value="mRizvandi.com"/>
    

    我的连接名称总是有“DomainName”+“DBConnectionString”模板,例如:

    <add name="mRizvandiDBConnectionString" connectionString=...
    

    好的,一切准备就绪,无需传递任何字符串即可获取连接字符串。

        public static string GetDBConnectionString()
        {
            string retValue = "";
            string domainUrl = "";
            string connectionKey = "";
            string dbConnectionString = "";
    
            domainUrl = GetDomainUrl();
            connectionKey = domainUrl.Substring(0, domainUrl.IndexOf(".")) + "DBConnectionString";
            dbConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings[connectionKey].ToString();
            retValue = dbConnectionString;
    
            return retValue;
        }
    

    希望对你有所帮助。

    【讨论】:

      【解决方案5】:

      以下代码对我有用。 如果 connectionString 未在 web.config 中创建,我添加了异常

      web.config:

       <configuration>
        <connectionStrings>
          <add name="DBConnection" connectionString="Data Source=myaddress;Initial Catalog=MyCatalog;User ID=myuser;Password=pass;Encrypt=True;TrustServerCertificate=False"
               providerName="System.Data.SqlClient" />
        </connectionStrings>
      </configuration>
      

      在我的连接类中:

      static internal string GetSqlConnectionString(){
      
      try {
          ConnectionStringSettings mySetting = ConfigurationManager.ConnectionStrings("DataBaseConnection");
          if (mySetting == null)
              throw new Exception("Database connection settings have not been set in Web.config file");
      
          return mySetting.ConnectionString;
      
      } catch (Exception ex) {
          throw;
      }}
      

      【讨论】:

      • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-02
      • 2015-03-20
      • 2020-01-13
      • 2016-03-26
      • 2019-02-21
      相关资源
      最近更新 更多