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

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

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

Error.
Во время обработки Вашего запроса произошла ошибка. Режим разработки В среде Swapping to Development будет отображаться более подробная информация о произошедшей ошибке.

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

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

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

Добавление переменной evironment в файл web.config не работает Deployment

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

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

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

Ответ 1

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

Доступ к базе данных под IIS APPPOOL\ASP.NET v4.0 Поскольку мы используем пул приложений ASP.NET v4.0, убедитесь, что IIS APPPOOL\ASP.NET v4.0 добавлен в ваш сервер базы данных → Безопасность → Вход.