ASP.NET Вход и регистрация работают в Visual Studio, но не при публикации в IIS

#sql #asp.net #iis

#sql #asp.net #iis

Вопрос:

Недавно я настроил авторизацию в своем файле Web.Config для моего ASP.NET проект. Например:

   <location path="Shipping.aspx">
<system.web>
  <authorization>
    <allow users="Shipper, Admin"/>

    <deny users="*"/>
  </authorization>

</system.web>
  

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

При установлении соединения с SQL Server произошла ошибка, связанная с сетью или конкретным экземпляром. Сервер не был найден или был недоступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений. (поставщик: сетевые интерфейсы SQL, ошибка: 50 — произошла ошибка среды выполнения локальной базы данных. Не удается создать автоматический экземпляр. Подробные сведения об ошибках см. в журнале событий приложения Windows.

Может ли кто-нибудь указать мне правильное направление?

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

1. Я думаю, вы используете интегрированную защиту для подключения к базе данных (проверьте connectionstring). Поэтому я предлагаю вам создать пользователя sql, сопоставить его с вашей базой данных, а затем использовать это имя пользователя и пароль для подключения.

2. Мохсин Мехмуд, можете ли вы точно объяснить, как создать пользователя sql / сопоставить его / и использовать имя пользователя и пароль? Извините, что я такой новичок!

Ответ №1:

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

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

1. Вот оно: add name=»DefaultConnection» Строка подключения=»Данные Source=.SQLEXPRESS;AttachDbFilename=C:inetpubwwwrootTraceabilityApp_Dataaspnet-Traceability-3c37005d-e7c9-4ac9-b612-38d4ac4e6769.mdf; Начальный каталог = aspnet-Traceability-3c37005d-e7c9-4ac9-b612-38d4ac4e6769; Встроенная безопасность = True»/>

2. Сначала проверьте, что сведения о подключении работают, подключившись непосредственно из среды SQL server management Studio или из Visual Studio к базе данных. Я не думаю, что это хорошая идея использовать «AttachDbFilename», вместо этого укажите правильное имя базы данных в «Начальном каталоге». Используемые вами имена не подходят, используйте короткие и понятные имена.

3. Чтобы выполнить быстрый тест, перейдите в management studio или любой другой инструмент, который у вас есть, введите имя сервера «.SQLEXPRESS» и попробуйте подключиться. Если не работает, то я предполагаю, что псевдоним «.» не определен. Итак, вам нужно явно ввести имя сервера, в данном случае это может быть имя вашего компьютера. Или вам нужно проверить Google, как добавить псевдоним на SQL server.

4. Я смог подключиться к . SQLEXPRESS через SSMS. Можете ли вы привести мне пример того, как должна выглядеть строка подключения?

5. Что-то вроде этого: ConnectionString=»Источник данных =.SQLEXPRESS; Начальный каталог =dbname; Встроенная безопасность = True»/. Есть много возможностей, зависит от того, как вы пытаетесь подключиться. Попробуйте удалить «Интегрированная безопасность = True» и добавить имя пользователя и пароль. Иногда брандмауэр может вызвать такую ошибку, поскольку приложение не может подключиться к базе данных. Попробуйте отключить это.

Ответ №2:

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