ASP.NET Core-приложение не подключается к базе данных после публикации

я создал простой ASP.Net основное приложение с аутентификацией пользователя (таким образом, вся Entity Framework была предварительно загружена в шаблон веб-приложения). Он подключается к моей базе данных с помощью connectionString который находится в my С "data source = {computerName}{serverName}" настройка.

экземпляр базы данных и Visual Studio расположены на одном компьютере. Это отлично работает при возврате данных в веб-api в режиме разработки и отладки. Когда я публикую его и пытаюсь перейти на сайт из доменного имени он позволяет мне просматривать веб-страницы, которые не нуждаются в подключении к базе данных, но остальные, которым нужны данные из базы данных, возвращают страницы следующим образом:

ошибка.
При обработке запроса произошла ошибка. Режим Разработки При переключении в среду разработки отобразится более подробная информация об ошибке.

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

я попытался изменить переменные среды для ASPNETCORE_ENVIRONMENT от развития к продукции к никакому успеху.

я пробовал добавлять appsettings.Production.json до publishOptions в своем project.json файл, даже если нет файл appsettings.Production.json и это не помогло. dotnet ограничителя публикации

добавление переменной evironment в не работает развертывание

мне нужна помощь в получении опубликованного веб-api для подключения к моей базе данных SQL Server из-за пределов настройки Visual Studio.

последнее, о чем я могу думать, это то, что, возможно, я ошибаюсь в том, как я понимаю строку подключения. Если веб-api использует строку подключения к подключитесь к базе данных со стороны сервера, тогда она должна работать нормально, как и при вызове http://localhost:port# так как все это на одной машине. Но если строка базы данных должна основываться на вызове на стороне клиента, то она должна быть с доменными именами и IP-адресами. Кто-нибудь может сказать мне, кто это?

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

1 ответов


после долгих исследований, наконец, в гугле "как развернуть веб-api в iis" я смог узнать от хост ASP.NET веб-API в IIS с помощью Visual Studio Publish что мне нужно добавить объект безопасности BUILTIN\IIS_IUSRS. Затем поместите сопоставление с таблицами базы данных и предоставьте db_datareader (и, возможно, db_datawriter) для базы данных IUSER, чтобы разрешить доступ из моего собственного веб-api IIS. Это из вышеупомянутой ссылки с частью, заявляющей

доступ к базе данных в IIS APPPOOL\ASP.NET v4.0 Как мы используем ASP.NET v4.0 пул приложений убедитесь, что IIS APPPOOL\ASP.NET v4.0 добавляется на сервер базы данных - > Безопасность - > логины.