Соединения с базой данных работают нормально, когда приложение запускается с локального хоста. Ошибка входа с сервера Dev - PullRequest
0 голосов
/ 11 июня 2009

У меня есть приложение, которое подключается к базе данных, получает имя пользователя из таблицы пользователя и сопоставляет его с именем пользователя, полученным с помощью System.Security.Principal.WindowsIdentity.GetCurrent.Name

На моем локальном хосте все работает нормально. База данных существует на сервере разработки, но приложение находится на моем локальном хосте. Все мои методы авторизации и аутентификации работают без сбоев.

Однако, когда я публикую свое приложение на сервере разработки, я сталкиваюсь со следующей ошибкой.

Cannot open database requested in login 'databaseName'. Login fails.
Login failed for user 'DevelopmentServerName\ASPNET'. 

Я не могу положить палец на то, что вызвало бы это. Любая помощь будет принята с благодарностью.

Спасибо!

Редактировать: вот строка подключения!

  <add name="connectionStringName" connectionString="Initial Catalog=myDatabase;Data Source=DevelopmentServerName;Integrated Security=True"
     providerName="System.Data.SqlClient" />

Кроме того, для контекста. Эта аутентификация должна получить имя пользователя Windows Windows и сопоставить его с именем пользователя в базе данных. У пользователей будет встроенное в базу данных имя пользователя Computername \ Myname (если они имеют право использовать требуемый раздел программы).

Еще раз спасибо:)

Ответы [ 4 ]

3 голосов
/ 11 июня 2009

Похоже, что ваше приложение пытается подключиться к базе данных под учетной записью ASPNET, которая может иметь ограниченные разрешения на сервере разработки, в отличие от входа в систему самостоятельно (ваш локальный компьютер может фактически использовать вашу идентификацию Windows) , Я вижу два возможных решения.

  1. Обязательно добавьте в раздел system.web файла web.config.

  2. Обратитесь к системному администратору и администратору SQL, чтобы убедиться, что учетная запись ASPNET имеет надлежащие полномочия для подключения к базе данных, если действительно ваша среда позволяет этой учетной записи подключаться.

Добавление некоторого дополнительного кода к вашему вопросу, например строки подключения, также может помочь.

EDIT: Итак, вы действительно используете IntegratedSecurity, поэтому, как правило, при таком типе настройки (с использованием олицетворения) вам необходимо убедиться, что вам предлагается добавить имя пользователя и пароль для аутентификации.

У нас аналогичная настройка, и для этого нам нужно перейти к настройкам IIS для виртуального каталога, выбрать вкладку «Безопасность каталога» и нажать кнопку «Редактировать» в разделе «Анонимный доступ и контроль аутентификации».

Убедитесь, что анонимный доступ снят, и вам, скорее всего, потребуется включить надлежащую аутентификацию для вашей среды. К сожалению, мы все еще используем обычную проверку подлинности (открытый текст), но встроенная проверка подлинности Windows также может работать для вас. Это зависит от вашей среды.

Я добавляю этот комментарий к основному сообщению, поскольку, похоже, это помогло ...

Я только что нашел это сообщение , которое может помочь вам получить правильную настройку конфигурации для обработки того, что вам нужно, в зависимости от вашей среды IIS.

0 голосов
/ 11 июня 2009

Похоже, что вы хотите выдать себя за абонента веб-страницы. Вам нужно добавить строку в ваш web.config, чтобы сделать это:

<identity impersonate="true" />

См. эту статью для объяснения.

0 голосов
/ 11 июня 2009

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

Это также может иметь отношение к вашей строке подключения. Если в вашем файле web.config вы используете что-то, кроме сочетания имени пользователя и пароля, вам, вероятно, потребуется дополнительная настройка, чтобы убедить сервер базы данных позволить вам подключиться.

0 голосов
/ 11 июня 2009

Ответ может лежать в вашей строке подключения. Я думаю, что вы используете встроенную аутентификацию для входа в базу данных. Это прекрасно работает, когда это ваша машина, потому что приложение использует ваши учетные данные. При публикации на сервере разработки вы будете использовать пользователя aspNet и не будете иметь необходимых учетных данных для входа в систему. Я бы либо добавил этого пользователя на сервер базы данных, либо изменил бы строку подключения для использования аутентификации SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...