ASP.NET теряет соединение с SQL Server Express после публикации в IIS

У меня есть приложение ASP.NET, которое получает данные из SQL Server Express на том же компьютере. Когда я запускаю проект ASP.NET из Visual Studio, проект может без проблем добраться до базы данных. Однако при публикации в IIS проект теряет соединение. Вот моя строка подключения, расположенная в Web.config:

<connectionStrings>
    <add name = "conString" 
         providerName = "System.Data.SqlClient" 
         connectionString = "Server = DESKTOP-EVAN\SERVER;Database=master;User ID=sa;Password=12345;" />
</connectionStrings>

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

Я добавил пул приложений и NT Authority в логин SQL, но все равно не удалось подключиться к базе данных.

У кого-нибудь есть опыт в этом? Как мне подключить опубликованный проект ASP.NET к моему SQL Server Express?

Находится ли сервер IIS на том же компьютере, что и компьютер, на котором запущена Visual Studio?

Tony Abrams 28.05.2019 18:48

Да, сервер IIS и Visual Studio находятся на одном компьютере.

GreenSaber 28.05.2019 18:48
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
2
704
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы пытались удалить пробелы для сервера следующим образом:

 Server=DESKTOP-EVAN\SERVER

Да, та же проблема

GreenSaber 28.05.2019 18:44

В вашей строке подключения указана база данных «master». Вы уверены, что это правильно? Обычно вы создаете новую базу данных, а не используете ее.

Jake Steffen 28.05.2019 19:39
master там, где столы, так что это правильно. Соединение работает при работе в Visual Studio, поэтому я думаю, что строка подключения в порядке, но я не уверен, почему она не работает при публикации.
GreenSaber 28.05.2019 19:41

Когда вы запускаете сайт под VS, пользователь работает как ваш локальный пользователь Windows. При развертывании в IIS он запускается как пользователь пула приложений. Проверьте, под каким пользователем это работает, перейдя в IIS> Сайты> Щелкните правой кнопкой мыши сайт> Управление веб-сайтом> Дополнительные настройки. Это пользователь, от имени которого он работает, и этому пользователю может потребоваться доступ к SQL. Если вам нужно добавить новый пул приложений, посмотрите здесь: docs.microsoft.com/en-us/iis/configuration/…

Jake Steffen 28.05.2019 19:49

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

GreenSaber 28.05.2019 19:53

Вы установить SQL Server Express на той машине, где работает IIS, или на машине, к которой можно получить доступ с машины IIS?

Также: вы явно определили отдельный имя экземпляра для вашего SQL Server Express при установке?

По умолчанию имя экземпляра будет SQLEXPRESS — но вы, кажется, ссылаетесь на DESKTOP-EVAN\SERVER — поэтому SERVER будет вашим именем экземпляра — так ли это??

Если не: можете вместо этого попробовать DESKTOP-EVAN\SQLEXPRESS в качестве имени сервера/экземпляра?

<connectionStrings>
    <add name = "conString" 
         connectionString = "Server=DESKTOP-EVAN\SQLEXPRESS;Database=master;User ID=sa;Password=12345;" 
         providerName = "System.Data.SqlClient" />
</connectionStrings>

SQL Express Server и IIS находятся на одном компьютере. Да, я только что дважды проверил, имя экземпляра SERVER. Это работает, если я запускаю из Visual Studio, база данных обновляет веб-страницы, но при публикации в IIS соединение теряется.

GreenSaber 28.05.2019 19:17

@GreenSaber та же проблема. у тебя есть решение?

amin89 20.12.2019 15:14

У меня это работает сейчас, но прошло некоторое время с тех пор, как я опубликовал это. Вот моя новая строка подключения в web.config, надеюсь, поможет: <add name = "conString" providerName = "System.Data.SqlClient" connectionString = "Server=DESKTOP-EXAMPLE\DATABASE;Database=m‌​aster;User ID=exampleuser;Password=password;MultipleActiveResultSets=Tr‌​ue;" />

GreenSaber 20.12.2019 15:21

Вы должны разрешить пользователю использовать iis в целях безопасности. Вот одно видео: https://thewikihow.com/video_rmVtxLKmkDU

Я надеюсь, что это поможет вам.

Я добавил IIS в систему безопасности, но он все еще не подключается

GreenSaber 28.05.2019 19:32

Другие вопросы по теме