Мы пишем мультитенантное приложение Silverlight. Пользователь входит в систему с использованием проверки подлинности Windows Forms, и мы извлекаем строку подключения для этого пользователя из таблицы. Строка имела вид:
Data Source=1.2.3.4; Initial Catalog=database; Persist Security Info=True; User ID=######; Password=##########
Это работало нормально. Затем мы решили, что установка имени приложения по указанным здесь причинам будет хорошей идеей:
Data Source=1.2.3.4; Initial Catalog=database; Application Name=application; Persist Security Info=True; User ID=######; Password=##########
Однако теперь соединение не устанавливается, поэтому мы получаем ошибки. Это только сбой на развернутом сайте. Запуск через Visual Studio, по-видимому, не затронут. Там не было никаких изменений в коде, который устанавливает соединение. Я готов поверить, что должны быть перемены, но я не смог понять, какими они должны быть.
Соединение создается следующим образом:
public class OurDataContext : DataContext
{
public OurDataContext()
: base(SessionCache.OurConnectionString)
{
....
}
}
SessionCache.OurConnectionString
- это строка, прочитанная из базы данных.
UPDATE
Изменение в строке подключения может быть красной сельдью. Мы получаем этот сбой только на одном веб-сервере (тот, к которому у меня нет прямого доступа). Добавление свойства в базу данных, на которую ссылается другой веб-сервер (к которому у меня do есть доступ), не воспроизводит проблему. Это приводит меня к выводу, что ошибка в другом месте. Однако я до сих пор не приблизился к решению этой проблемы.
Фактическая ошибка является исключением:
An exception of type 'System.ServiceModel.DomainServices.Client.DomainOperationException' occurred and was caught.
------------------------------------------------------------------------------------------------------------------
01/31/2012 14:18:53
Type : System.ServiceModel.DomainServices.Client.DomainOperationException, System.ServiceModel.DomainServices.Client, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Message : Load operation failed for query 'GetUserSecurityConfig'. The remote server returned an error: NotFound.
Status : ServerError
ErrorCode : 0
Data : System.Collections.ListDictionaryInternal
Stack Trace : The stack trace is unavailable.
Все исследования, которые я провел сегодня по этому вопросу, возвращают некоторые довольно простые вещи, которые не должны были изменить:
- System.ComponentModel.DataAnnotations, System.ServiceModel.DomainServices.EntityFramework, System.ServiceModel.DomainServices.Hosting и System.ServiceModel.DomainServices.Server не копируются в каталог \ bin. Я проверил, и они.
- Ошибки при подключении к серверу базы данных. Я не думаю это так, поскольку аутентификация форм работает. Это другая база данных на сервере, но учетные данные совпадают.