如何从Asp.net MVC3 Web应用程序中的web.config读取ConnectionString?

时间:2013-02-21 10:53:06

标签: asp.net-mvc asp.net-mvc-3 iis connection-string

我在Asp.net Razor MVC3工作。我创建了一个App_Code文件夹,并创建了一个类,我希望从web.config中读取连接字符串,并使用此类处理数据库。我在这个app_code类中写了System.Configuration,但它没有显示ConfigurationManager类的Configuration。 它显示像这样 enter image description here 而不是如果我在任何控制器中写相同的行,那么它将显示System.Configuration.ConfigurationManager而在控制器中我可以从web.config读取连接字符串,但在app_code中我不能。

请给我解决方法如何在app_code类中读取连接字符串?

2 个答案:

答案 0 :(得分:10)

包含对System.Web.Configuration的引用:

using System.Web.Configuration;

然后,在您的代码中,像这样访问它:

WebConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString;

示例类:

using System.Web.Configuration;

namespace MyWebApp.App_Code
{
    public class TestClass
    {
        public void TestMethod()
        {
            var connStr = WebConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString;
        }
    }
}

答案 1 :(得分:0)

如果收到有关“ConfigurationManager在当前上下文中不存在”的错误,则除了在控制器中包含using System.Configuration语句外,还需要安装dll程序集。

您可以在Nuget图库https://www.nuget.org/packages/System.Configuration.ConfigurationManager/中找到它,或者在Visual Studio中添加一个程序集引用。

之后,你可以写string MyString = ConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString;(注意那段代码末尾的单数形式)。

或者,如果您还没有为System.Configuration编写using语句,那么您将编写相同的内容,但前缀为string MyString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString;