【问题标题】:Issue with connection string in web config fileWeb 配置文件中的连接字符串问题
【发布时间】:2012-01-02 03:48:38
【问题描述】:

我正在尝试在 web 配置文件中设置 mysql 连接。

这是连接字符串代码:

    <connectionStrings>
    <add name="connstring" 
         connectionString="DRIVER={MySQL ODBC= 3.51=        Driver};Database=marctest;Server=localhost;UID=root;PWD=1234;" 
         providerName="System.Data.SqlClient"/>
    </connectionStrings>

我正在以下步骤中访问它:

    MySqlConnection connmysql = new MySqlConnection(WebConfigurationManager.ConnectionStrings["connstring"].ConnectionString);

当我运行我的代码时,它会生成一个空引用异常。“对象引用未设置为对象的实例。”

我该如何解决这个问题?

【问题讨论】:

标签: c# mysql web-services


【解决方案1】:

如果您使用的是MySql .Net Connector,那么您的配置设置应类似于以下内容

<add name="connstring" connectionString="server=localhost;User Id=root;Persist Security Info=True;database=marctest;password=PASSWORD" providerName="MySql.Data.MySqlClient"/>

那么你的代码应该是这样的。

using (MySqlConnection dbConn = new MySqlConnection(ConfigurationManager.ConnectionStrings["connstring"].ConnectionString)) 
{ 
    // Database work done here 
}

【讨论】:

  • 我正在使用类似的代码,但问题仍未解决!
  • “类似”或相同,因为“connectionString”设置很重要,如果不正确连接将不会被初始化。检查配置文件和代码中“connstring”的拼写是否一致。
【解决方案2】:

我认为你有 MySql 连接器/网络 API。更改 ProviderName 属性并查看ConnectionStrings。它应该是MySql.Data.MySqlClient 并使用System.Configuration.ConfigurationManager.ConnectionStrings 集合。

【讨论】:

  • 这已经完成但仍然有同样的错误。有没有其他办法解决这个问题?
  • 你用的是什么web.config?它是在根目录还是子目录?
【解决方案3】:

您应该首先检查以下内容:

ConfigurationManager.ConnectionStrings["connstring"].ConnectionString

返回一个字符串,你可以用Response.Write把它写到输出或者用调试器查看

如果您有上述步骤中的字符串,请检查您正在使用的类 WebConfigurationManager 是否已实例化且不为空。

如果您没有从第一步获得字符串,您的代码文件夹中可能有另一个 web.config,这将是一个虚拟目录,可能会覆盖您的 web.config

您的connectionStrings 部分应位于Web.config 文件的configuration 内,且应如下所示

<configuration>
  <connectionStrings>
    <add name="connstring" connectionString="..." providerName="..." />
  </connectionStrings>

  <appSettings>
  ...
  </appSettings>
</configuration>

尝试从纯 *.ASPX 页面读取连接字符串,看看是否可以先访问它。

创建一个 ASPX 文件并在其中粘贴以下内容并从浏览器中调用它。

<%@ Page Language="C#" %>
<% 
Response.Write(ConfigurationManager.ConnectionStrings["DbConnection"].ConnectionString); 
%>

如果您仍然无法读取连接字符串,请编辑您的问题并添加完整的 web.config 以及您尝试创建连接的类文件,以便我查看可能出现的问题

【讨论】:

  • 它本身不返回字符串值(抛出相同的错误)。而且我在我的项目文件夹中找不到任何其他 web.config 文件。还有什么办法可以解决吗??
  • 我更新了答案,如果您仍然无法在您的页面中看到连接字符串,请告诉我
  • 我怀疑您是从 System.Web.UI.Page 以外的类创建连接,因此对象 ConfigurationManager 不会自动实例化
  • 这听起来很奇怪.. 但是我创建了一个新项目并在那里添加了我的代码并使用上述建议编辑了 webconfig 文件并且它有效.... webconfig 文件有没有机会得到损坏还是什么??
  • 可能是,在我看到你的 web.config 和类代码之前我什么都不能说,你可以删除所有其他方法并使用你正在创建的部分、类名、继承和方法离开你的连接
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-17
  • 1970-01-01
  • 2013-04-06
  • 2020-06-25
  • 2012-12-31
  • 1970-01-01
相关资源
最近更新 更多