IIS для входа в SQL Server с именем пользователя, которого не существует

#c# #asp.net #sql-server #windows #iis

#c# #asp.net #sql-сервер #Windows #iis

Вопрос:

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

 Ошибка сервера в приложении '/'.

 Не удалось войти в систему для пользователя 'MLABS  STUDENT-006 $'.

 Описание: Необработанное исключение возникло во время выполнения текущего веб-запроса. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде. 

 Сведения об исключении: System.Data.SqlClient.SQLException: ошибка входа в систему для пользователя 'MLABS  STUDENT-006 $'.

 Ошибка источника: 

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

 Трассировка стека: 


 [Исключение SQLException (0x80131904): ошибка входа в систему для пользователя 'MLABS  STUDENT-006 $'.]
 Система.Данные.База поставщиков.DbConnectionPool.getConnection(DbConnection owningObject)  578
 System.Data.База поставщиков.DbConnectionFactory.getConnection(DbConnection owningConnection)  88
 System.Data.База поставщиков.DbConnectionClosed.openConnection(DbConnection Outconnection, DbConnectionFactory ConnectionFactory)  6275911
 Система.Данные.SqlClient.SqlConnection.Открыть()  258
 RadarGraphInsertDLL.LOMDLL.Get_Last_Lom() в c:usersagordondocumentsvisual studio 2008projectslomdbenterdataradargraphdllradargraphinsertdlllomdll.cs:212
 Введите данные.Ввод данных.LOMForm.Page_Load(отправитель объекта, EventArgs e) в C:UsersagordonDocumentsVisual Studio 2008Проекты lomdbEnterDataDataEntryLOMForm.aspx.cs:20
 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, объект o, Объект t, EventArgs e)  25
 System.Web.Util.CalliEventHandlerDelegateProxy.Обратный вызов (отправитель объекта, EventArgs e)  42
 System.Web.UI.Control.Загрузка (EventArgs e)  132
 System.Web.UI.Control.LoadRecursive()  66
 System.Web.UI.Page.ProcessRequestMain(логические includeStagesBeforeAsyncPoint, логические includeStagesAfterAsyncPoint)  2428

 Информация о версии: Microsoft .NET Framework Версия: 2.0.50727.5448; ASP.NET Версия: 2.0.50727.5420

STUDENT-006 — это имя моего компьютера, это не мое имя пользователя! я не понимаю, почему он пытается войти в систему с именем моего компьютера.

при запуске приложения оно немедленно должно извлекать данные из базы данных. у меня включена проверка подлинности Windows, и она работает без проблем при запуске из dubugger, но при попытке компиляции я получаю указанную выше ошибку

что я делаю не так?

Ответ №1:

MLABSSTUDENT-006$ это имя пользователя, с которым работает пул приложений IIS. Вы либо меняете пользователя пула приложений в IIS,

  1. Откройте диспетчер IIS. Для получения информации об открытии диспетчера IIS см. раздел Открыть диспетчер IIS (IIS 7).

  2. На панели подключения разверните узел сервера и щелкните Пулы приложений.

  3. На странице Пулы приложений выберите пул приложений, для которого вы хотите указать идентификатор, а затем нажмите Дополнительные параметры на панели Действия.

  4. Для свойства Identity щелкните … кнопка для открытия диалогового окна идентификации пула приложений.

  5. Если вы хотите использовать встроенную учетную запись, выберите опцию встроенной учетной записи и выберите учетную запись из списка.

  6. Если вы хотите использовать пользовательское удостоверение, выберите параметр Пользовательская учетная запись и нажмите Установить, чтобы открыть диалоговое окно Установить учетные данные. Затем введите имя пользовательской учетной записи в текстовом поле Имя пользователя, введите пароль в текстовом поле Пароль, повторно введите пароль в текстовом поле Подтверждение пароля, а затем нажмите кнопку ОК.

  7. Нажмите кнопку ОК, чтобы закрыть диалоговое окно идентификации пула приложений.

или вы можете выдать себя за другого в web.config.

 <configuration>
  <system.web>
    <identity impersonate="true"/>
  </system.web>
</configuration>
  

Комментарии:

1. тем не менее, почему это не позволяет использовать это имя пользователя там?

2. Вы можете указать учетную запись, если вам нужно <identity impersonate="true" userName="contosoJane" password="********" /> , в противном случае она будет использовать учетную запись зарегистрированного пользователя.

Ответ №2:

MLABS STUDENT-006 $ — это учетная запись, на которую похожа учетная запись локальной «СЕТЕВОЙ СЛУЖБЫ» при подключении к другим машинам и как сервер зарегистрирован в Active Directory.

Это то, под чем работает пул приложений в IIS, поэтому он подключается к SQL Server.

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