【问题标题】:asp.net connection string problem in web.configweb.config中的asp.net连接字符串问题
【发布时间】:2019-02-21 04:31:56
【问题描述】:

我最近的项目有点问题。我的 web.config 中有一个连接字符串,但我想在我的 sql 特定类中访问它。

我的连接字符串是这样的:

“数据源=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-Joblication-20180902120147.mdf;Integrated Security=True”

它存储在我的 web.config 文件中。

我的问题是默认的 asp.net 函数可以访问这个数据库,但我想在数据库中存储其他数据,所以我尝试使用 SqlConnection 类访问它。我设置了 SqlConnection 对象的 ConnectionString 属性:

SqlConncetion connection = new SqlConnection()
connection.ConnectionString = "Data Source=(LocalDb)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\aspnet-Joblication-20180902120147.mdf;Integrated Security=True";

但我每次都会收到此错误:

System.Data.SqlClient.SqlException: '试图附加一个自动 文件 *.mdf 的命名数据库失败。存在同名数据库,或指定文件无法打开,或位于 UNC 共享上。'

我将 mdf 文件的名称替换为“*”,因此它更短且易于阅读。

如果我理解这一点,那么我的 .mdf 文件已经附加到 MSSQLLocalDB,所以我应该连接到 MSSQLLocalDB 并且我应该能够以某种方式访问​​ .mdf 文件,对吧?

当我尝试这个时:

connection = new SqlConnection();
connection.ConnectionString = "Data Source=(LocalDb)\\MSSQLLocalDB;Integrated Security=True";

那么它似乎没问题,因为连接现在正在工作,但我的查询没有。我的查询正在尝试从 .mdf 文件的表中获取数据,但在此连接中未指定 .mdf 文件。

那么我该如何指定呢?

【问题讨论】:

  • 哦...我找到了指定数据库的方法。我在 ConnectionString 属性中添加了初始目录,但现在它无法让我登录。你知道我该如何登录吗?我认为默认情况下它是基于 Windows 身份验证的,但我不确定......如果有任何帮助,我将不胜感激。
  • 您的连接字符串中有Integrated Security=True
  • 是的。在我的连接字符串中集成安全性是正确的。
  • 最新的错误信息是什么?请分享一下好吗?
  • System.Data.SqlClient.SqlException: '无法打开登录请求的数据库 "aspnet-Joblication-20180902120147.mdf"。登录失败。用户“DESKTOP-BIDR6TV\gomis96”登录失败。

标签: c# asp.net asp.net-mvc


【解决方案1】:

在您的代码部分添加数据库名称。我已经实现了这种方式。

"Data Source=(LocalDb);Initial Catalog=databasename;Integrated Security=True;"

【讨论】:

  • “试试这个”不是答案。说明您所做的更改以及如何解决问题。
  • 它需要一个 localdb 实例名称,而我唯一的 localdb 实例是 MSSQLLocalDB。
  • 在你的最后一个代码部分connection = new SqlConnection(); connection.ConnectionString = "Data Source=(LocalDb)\\MSSQLLocalDB;Integrated Security=True"; 你不会指定你的数据库名称。在Initial Catalog = aspnet-Joblication-20180902120147.mdf 中提及您的数据库名称。我认为它会起作用。我已经用这个实现了。
【解决方案2】:

首先在您的web.config 中更新连接字符串,如下所示:

<add name="DefaultConnection"
    providerName="System.Data.SqlClient"
    connectionString="Data Source=(LocalDb)\\MSSQLLocalDB;AttachDbFileName=|DataDirectory|\aspnet-Joblication-20180902120147.mdf;Integrated Security=True;User Instance=True;MultipleActiveResultSets=True" />

然后在代码中:

// Don't hard coded the connection string here. Get it from web.config as follows
string connectionString = WebConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
using (var connection = new SqlConnection(connectionString))
{
   connection.Open();
   // Do your necessary staffs here.
}

【讨论】:

    【解决方案3】:

    添加到您的 Web.config

    <add name="Connectionstring"
    providerName="System.Data.SqlClient"
    connectionString="Data Source=(localdb)\ProjectsV13;Initial Catalog=TestDb;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False" />
    

     class Program
    {
        private readonly string _connectionString;
        public Program()
        {
            _connectionString = ConfigurationManager.ConnectionStrings["Connectionstring"].ConnectionString;
        }
        static void Main(string[] args)
        {
    
            using (var connection = new SqlConnection(_connectionString))
            {
                connection.Open();
                // Do your logic here.
            }
        }
    }
    

    【讨论】:

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