2015-11-11 3 views
0

Я пытаюсь перенести веб-приложение из ASP.NET 4.5 в ASP.NET 5/MVC 6 (бета-версия 8).Строка подключения не видна из библиотеки классов ссылок

Приложение состоит из WebApp и библиотеки классов, которая инкапсулирует доступ к БД. В моем новом решении библиотека классов имеет тип Библиотека классов (пакет).

Уровень доступа DB (библиотека классов) пытается найти строку соединения с именем MyConnection. В моем старом приложении ASP.NET 4.5 я использовал эту строку соединения в web.config WebApp. Как-то эта конфигурация нашла путь к моей библиотеке классов, чтобы моя библиотека классов могла получить доступ к строке соединения, определенной в WebApp.

Теперь с ASP.NET 5 Я аналогично пытался определить строку подключения в appsettings.json так:

{ 
    "ConnectionStrings": { 
    "MyConnection": "server=localhost\\SQLEXPRESS;database=MyDb;Integrated Security=True" 
    } 
} 

Но во время выполнения я получаю следующее сообщение об ошибке:

Can't find a connection string with the name 'MyConnection'

Таким образом, в отличие от старого ASP.NET, здесь конфигурация, похоже, не подходит для ссылочной библиотеки классов.

Как я могу убедиться, что моя строка подключения видна из моей библиотеки классов?

+1

вам необходимо создать класс для настройки строки подключения, а при запуске вы привязываете класс из appsettings.json, и вам нужно вставить его в свою библиотеку классов, подобную этому вопросу о секретах пользователя, где есть другое место, которое вы могли бы поставить вашей строки подключения. Статический доступ к настройкам конфигурации больше не существует. http://stackoverflow.com/questions/32599573/how-do-i-inject-asp-net-5-vnext-user-secrets-into-my-own-utility-class/32608820#32608820 –

+0

Спасибо за ваш вклад , Но при таком подходе невозможно будет получить доступ к этим данным с помощью 'ConfigurationManager.ConnectionStrings [...]', правильно? Дело в том, что я использую стороннюю библиотеку, которая пытается получить доступ к строке подключения на основе ее имени таким образом ... –

+0

Хорошо, что сторонняя библиотека также имеет конструктор, который принимает ConnectionString и ProviderName, а не имя ConnectionStringName. Теперь я передаю эти два значения, используя механизм, описанный в вашей ссылке. Это помогло - большое спасибо! –

ответ

1

необходимо создать класс для настройки строки подключения, а при запуске вы привязываете класс из appsettings.json, и вам нужно ввести его в свою библиотеку классов, аналогичную this question, о секретах пользователей, которые вы можете добавить в другое место вашей строки подключения. Статический доступ к настройкам конфигурации больше не существует.

Смежные вопросы