#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:
Проблема заключалась в том, что я не закрывал соединение в классе перед возвратом значения. Я закрывал его после, что создало массу открытых подключений, приводящих к сбою системы.