我试图从配置文件访问connectionStrings。代码是ASP。Net + c#。我已经添加了System。配置参考,也提到与使用。但它仍然不接受集会。
我正在使用VSTS 2008。知道是什么原因吗?
另一个奇怪的地方是程序集名称显示为“System”。configuration",小写c,这不是其他系统程序集的名称显示方式。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
namespace Utility
{
public class CommonVariables
{
public static String ConnectionString
{
get { return ConfigurationManager.ConnectionStrings["EmployeeEntities"].ConnectionString; }
}
}
}
配置:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="qbankEntities" connectionString="metadata=res://*/qbankModel.csdl|res://*/qbankModel.ssdl|res://*/qbankModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=localhost;Initial Catalog=qbank;Persist Security Info=True;User ID=**;Password=****;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
如果你得到了很多警告(在我的例子中,一个解决方案中有64个!
CS0618:“ConfigurationSettings。这个方法已经过时了,它已经被System.Configuration!System.Configuration. configurationmanager .AppSettings所取代。
因为你正在升级一个旧的项目,你可以节省很多时间,如下所示:
添加系统。配置作为参考部分的参考。
在每个class (.cs)文件的顶部添加以下两个using语句:
使用System.Configuration;
using ConfigurationSettings = System.Configuration.ConfigurationManager;
由此变化所发生的一切
ConfigurationSettings.AppSettings["mySetting"]
现在将引用正确的配置管理器,不再是已弃用的配置管理器,并且所有CS0618警告将立即消失。
当然,请记住,这是一个快速的hack。从长远来看,您应该考虑重构代码。
为了进行完整性检查,尝试创建一个新的Web应用程序项目,打开默认的后面的代码。aspx页面。在Page_Load中添加一行以访问连接字符串。
它应该有System。默认情况下添加为参考的配置。您还应该在代码文件的顶部看到using语句。
我的代码背后的文件现在看起来像这样,编译没有问题。
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string connString = ConfigurationManager.ConnectionStrings["MyConnectionStringName"].ConnectionString;
}
}
}
这假设我在我的网络中有一个连接字符串。配置名称等于“MyConnectionStringName”,就像这样…
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="MyConnectionStringName"
connectionString="Data Source=.;Initial Catalog=MyDatabase;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
是的,我知道这很初级。但如果你没有任何更好的想法,有时检查一些你知道应该有效的简单方法会有所帮助。