Как поддерживать производственную среду с помощью ASP.NET Приложение Core 2.2 в Docker

#docker #asp.net-core #docker-compose #production-environment

#docker #asp.net-core #docker-compose #производственная среда

Вопрос:

Я запускаю свое приложение, созданное под (Visual Studio Code на Mac Mojave 10.14.14) в docker, и я получаю эту ошибку :

 ASP.NET Core with Entity Framework Core  ASPNETCORE_ENVIRONMENT
Error.
An error occurred while processing your request.
Development Mode
Swapping to Development environment will display more detailed information about the error that occurred.

Development environment should not be enabled in deployed applications, as it can result in sensitive information from exceptions being displayed to end users. For local debugging, development environment can be enabled by setting the ASPNETCORE_ENVIRONMENT environment variable to Development, and restarting the application.
  

Скорее всего, потому, что для переменной среды ASPNETCORE_ENVIRONMENT у меня было установлено значение Development!

А также есть некоторый код в общедоступной конфигурации void по умолчанию (приложение IApplicationBuilder, IHostingEnvironment env, ILoggerFactory LoggerFactory) в файле Startup.cs, который проверяет это.

  public void Configure(IApplicationBuilder app, IHostingEnvironment env)
 {
     app.UseExceptionHandler("/Error");
     app.UseHsts();
 }
  

Docker-compose.yml :

 version: '3.4'

services:
  site:
    image: ${DOCKER_REGISTRY-}site
    build:
      context: .
      dockerfile: site/Dockerfile
  

lanchSettings.json :

 {
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:18215",
      "sslPort": 44326
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "site": {
      "commandName": "Project",
      "launchBrowser": true,
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}
  

Пожалуйста, какие-либо решения?

Спасибо

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

1. Если вы запускаете проект без хостинга в docker? Вы увидите какую-либо ошибку? Попробуйте заменить app.UseExceptionHandler("/Error"); на app.UseDeveloperExceptionPage(); , чтобы проверить сообщение об ошибке.

2. @TaoZhou Да, это было ‘app.UseDeveloperExceptionPage();’ но это не работает, но без размещения в docker все работает нормально.

3. В чем ошибка при использовании UseDeveloperExceptionPage ?

4. @TaoZhou При использовании UseDeveloperExceptionPage я получаю эту ошибку : InvalidOperationException: No service for type 'sitehidamek.Models.MyKeysContext' has been registered. CryptographicException: An error occurred while trying to encrypt the provided data. Refer to the inner exception for more information. Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.Protect(byte[] plaintext)

5. Поделитесь с нами своим Startup.cs . Как вы зарегистрировались MyKeysContext ?