【问题标题】:Visual Studio 2012 ASP.NET MVC Connection Strings Web.ConfigVisual Studio 2012 ASP.NET MVC 连接字符串 Web.Config
【发布时间】:2013-07-08 14:20:03
【问题描述】:

我有一个查询数据库的 Visual Studio 2012 ASP.NET MVC 应用程序。有人告诉我,将连接字符串保留在 web.config 文件中是一种很好的做法。名为ConnString 的连接字符串位于:

  <connectionStrings>
      <add name="ConnString" connectionString="Data Source=IP_OF_SERVER,PORT; Initial Catalog=DATABASE_NAME; UID=USERNAME; pwd=PASSWORD; Integrated Security=True;"/>
  </connectionStrings>

在我想要获取连接字符串的 C# 中,我使用:

String connStr = ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString;

应用在这一行死掉并抛出以下异常:

Object reference not set to an instance of an object. System.NullReferenceException: Object reference not set to an instance of an object.

我已包含:

using System.Configuration;

在页面顶部,但仍然失败。我尝试使用using System.WebConfiguration,但仍然无法获取字符串。如何获取字符串?

【问题讨论】:

  • 在你的web.config文件中,下的节点是不是一个?
  • 试试 ConfigurationManager.ConnectionStrings["ConnString"].ToString()
  • @RyanWeir - 是的,它是 节点的直接子节点。
  • @ckv - 当我尝试这样做时,我得到“对象引用未设置为对象的实例”。
  • 您将它添加到哪个 web.config 中?项目根目录中的那个?还是您的 Views 目录中的那个?

标签: asp.net-mvc visual-studio-2012 web-config


【解决方案1】:

更改您的 web.config 文件,以将 providerName="System.Data.SqlClient" 作为连接字符串的属性包括在内,如下所示:

  <connectionStrings>
      <add name="ConnString" connectionString="Data Source=IP_OF_SERVER,PORT; Initial Catalog=DATABASE_NAME; UID=USERNAME; pwd=PASSWORD; Integrated Security=True;" providerName="System.Data.SqlClient" />
  </connectionStrings>

【讨论】:

  • 谢谢,问题实际上是我使用了错误的 web.config 文件!
【解决方案2】:

您错过了在连接字符串中添加providerName="System.Data.SqlClient"

将您的连接字符串更改为:

  <connectionStrings>
          <add name="ConnString" connectionString="Data Source=IP_OF_SERVER,PORT; Initial Catalog=DATABASE_NAME; UID=USERNAME; pwd=PASSWORD; Integrated Security=True;" providerName="System.Data.SqlClient" />
      </connectionStrings>

问候

【讨论】:

  • 这不会影响 ConfigurationManager,因为它会忽略提供程序。仅由 ADO.net 使用
【解决方案3】:

我没有什么新东西可以回答这个问题,但我想给出一些解释,

 System.Data.SqlClient 

其用于 SQL Server 的 .NET Framework 数据提供程序。在 web.config 中,您应该将 System.Data.SqlClient 作为 providerName 属性的值。它是您正在使用的 .NET Framework 数据提供程序。

如果您必须将应用程序与 MYSql 连接,那么您可以使用

  MySql .Net Connector

它是必需的,但在您的情况下它丢失了,这就是您收到错误消息的原因。

你可以阅读更多关于(这里)[http://msdn.microsoft.com/en-US/library/htw9h4z3(v=VS.80).aspx] 希望它能让你更好地理解你的错误做了,你修好了。

 <configuration>
  <connectionStrings>
    <add name="Northwind"
         connectionString="Data Source=Data Source=IP_OF_SERVER,PORT; Initial Catalog=DATABASE_NAME; UID=USERNAME; pwd=PASSWORD; Integrated Security=True;" 
         providerName="System.Data.SqlClient" />
   </connectionStrings>
 </configuration>

【讨论】:

    猜你喜欢
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    • 2019-02-21
    相关资源
    最近更新 更多