Настройки библиотеки

  1. У меня есть проект библиотеки, который обращается к базе данных, настроенной в app.config
  2. У меня есть веб-проект, который обращается к базе данных, настроенной в web.config

Оба работают правильно

Теперь я хочу использовать библиотеку из веб-проекта. В Visual Studio работает нормально. На производственном сервере веб-проект обращается к базе данных, но библиотека не может получить доступ к базе данных из сети проекта.

ConnectionString в app.config и web.config идентичны. В производственном сервере не следует брать настройки web.config?

Спасибо и извините за мой английский

ИЗМЕНИТЬ

web.config и app.config connectionStrings

<connectionStrings> 
    <add name="IntranetConnectionString" 
         connectionString="Data Source=(local)\SQLExpress;Initial Catalog=Intranet;Integrated Security=True;" 
         providerName="System.Data.SqlClient" /> 
    <add name="Database.Properties.Settings.IntranetConnectionString" 
         connectionString="Data Source=(local)\SQLEXPRESS;Initial Catalog=Intranet;Integrated Security=True" 
         providerName="System.Data.SqlClient" /> 
</connectionStrings>

Ошибка:

При установлении соединения с SQL Server произошла ошибка, связанная с сетью или конкретным экземпляром. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра правильное и что SQL Server настроен на разрешение удаленных подключений. (поставщик: Сетевые интерфейсы SQL, ошибка: 26 - Ошибка при обнаружении указанного сервера / экземпляра)


person Leonardo    schedule 22.05.2012    source источник
comment
но в чем ошибка? не могли бы вы показать нам трассировку стека?   -  person Jorge    schedule 23.05.2012


Ответы (3)


Если я правильно понимаю, попробуйте скопировать локально ссылку на библиотеки, для этого right-click ссылку в вашем проекте, затем в свойствах установите True на Copy Local, теперь библиотеки будут локально на вашем сервере.

Это должно сработать, если проблема связана со ссылками на библиотеки, это не поможет, если это web.config/app.config проблема.

person Luis    schedule 22.05.2012
comment
Проблема не в ссылках, а в конфигурации. --- Испанский: El проблема no es de referencias, es de configuración. - person Leonardo; 23.05.2012
comment
Не могли бы вы выложить файлы .config? - person Luis; 23.05.2012
comment
.... ‹connectionStrings› ‹добавить имя = IntranetConnectionString connectionString = Источник данных = (локальный) \ SQLExpress; Начальный каталог = Интранет; Интегрированная безопасность = True; providerName = System.Data.SqlClient / ›‹ добавить имя = Database.Properties.Settings.IntranetConnectionString connectionString = Data Source = (local) \ SQLEXPRESS; Начальный каталог = Intranet; Integrated Security = True providerName = System.Data.SqlClient / ›‹ / connectionStrings ›..... - person Leonardo; 23.05.2012
comment
отредактируйте свой вопрос и обновите свой app.config в вопросе, а не здесь - person Jorge; 23.05.2012

DLL обычно принимает app.config вызывающего ее хост-приложения, а не свою собственную конфигурацию. Здесь есть мясо?

person edocetirwi    schedule 22.05.2012
comment
Когда вы публикуете его, конфигурация попадает в [app_name] .exe.config, а не в app.config, что не так? - person edocetirwi; 23.05.2012
comment
Это веб-проект (не exe). Когда я публикую web.config правильно. Доступ к базе данных работает нормально из приложения, но не из библиотеки DLL. DLL не принимает настройки web.config !! - person Leonardo; 23.05.2012

Решение:

В DLL создайте класс для доступа к DataTable с конструктором, который получает ConnectionString

public TestBLL(String ConnectionString)
{
    TestTableAdapter ta = new TestTableAdapter();
    ta.Connection = new System.Data.SqlClient.SqlConnection(ConnectionString);
}

В веб-проекте:

String cs = System.Configuration.ConfigurationManager.ConnectionStrings["IntranetConnectionString"].ToString();
TestBLL taBLL = new TestBLL(cs);

В tabLL есть методы для доступа к каждому запросу

person Leonardo    schedule 23.05.2012