Почему это соединение с базой данных терпит неудачу, когда "Имя приложения = приложение" находится в строке подключения?

126
13

Мы пишем многоуровневое приложение 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


Изменение строки подключения может быть красной селедкой. Мы получаем этот отказ только на одном веб-сервере (тот, к которому у меня нет прямого доступа). Добавление свойства в базу данных, на которое ссылается другой веб-сервер (к которому у меня есть доступ), не воспроизводит проблему. Это приводит меня к выводу, что ошибка находится где-то в другом месте. Тем не менее, я все еще не готов к решению этого вопроса.


Фактическая ошибка является исключением:


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. Я проверил, и они есть.
    Ошибки подключения к серверу базы данных. Я не думаю, что это так, как работает проверка подлинности форм. Это другая база данных на сервере, но учетные данные одинаковы.

спросил(а) 2012-01-30T17:16:00+04:00 8 лет, 7 месяцев назад
1
Решение
58

Проблема оказалась из-за версии RIA Services, установленной на сервере.


Недавно мы изменили проекты, включив службы RIA через диспетчер пакетов NuGet, и на этом сервере уже установлены службы RIA для VS2010. Когда мы разобрали это, все ожило.

Непонятно, почему так долго нужно было проявлять эту проблему.

ответил(а) 2012-02-01T12:18:00+04:00 8 лет, 7 месяцев назад
40

Мы получаем этот отказ только на одном веб-сервере (у которого у меня нет прямого доступа). Добавление свойства в базу данных, на которое ссылается другой веб-сервер (к которому у меня есть доступ), не воспроизводит проблему.



Проверьте конфигурацию веб-сервера и правильность установки базы данных.

выглядит как установка webserver config/db для меня.

ответил(а) 2012-01-31T20:55:00+04:00 8 лет, 7 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема