Проблема строки подключения asp.net в web.config - PullRequest
0 голосов
/ 17 сентября 2018

У меня небольшая проблема с моим недавним проектом. У меня есть строка подключения в моем файле web.config, но я хотел бы получить к ней доступ в своем классе, специфичном для sql.

Моя строка подключения выглядит следующим образом:

"Источник данных = (LocalDb) \ MSSQLLocalDB; AttachDbFilename = | DataDirectory | \ aspnet-Joblication-20180902120147.mdf; Интегрированная безопасность = True"

Он хранится в моем файле web.config.

Моя проблема в том, что функции asp.net по умолчанию могут получить доступ к этой базе данных, но я хотел бы сохранить другие данные в базе данных, поэтому я попытался получить к ней доступ с помощью класса SqlConnection. Я установил свойство ConnectionString объекта SqlConnection:

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 в этом соединении не указан.

Так как я могу это указать?

Ответы [ 3 ]

0 голосов
/ 17 сентября 2018

Сначала в вашем 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.
}
0 голосов
/ 10 октября 2018

Добавьте в свой 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.
        }
    }
}
0 голосов
/ 17 сентября 2018

В вашей части кода добавьте имя базы данных. Я уже реализовал этот способ.

"Data Source=(LocalDb);Initial Catalog=databasename;Integrated Security=True;"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...