После публикации приложения asp. net core 2.2 в приложении azure возвращается 500 - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь опубликовать sh приложение в azure службе приложений, но проблема, которую я получаю, - это статус http 307, который предназначен для временного перенаправления. В моем файле startup.cs я уже настроил приложение на использование SSL-порта 443. Но после проверки логов я получаю.

2020-02-05 09:15:00.1616|INFO|Microsoft.AspNetCore.Hosting.Internal.WebHost|Request starting HTTP/1.1 GET http://appservicenameabc.azurewebsites.net/  
2020-02-05 09:15:00.1778|WARN|Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware|Failed to determine the https port for redirect.
2020-02-05 09:15:00.4230|ERROR|Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware|An unhandled exception has occurred while executing the request.
2020-02-05 09:15:00.4403|ERROR|Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware|An exception was thrown attempting to execute the error handler.
2020-02-05 09:15:00.4554|ERROR|Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer|Connection ID "15996785878030621091", Request ID "800019a8-0000-de00-b63f-84710c7967bb": An unhandled exception was thrown by the application.
2020-02-05 09:15:00.5086|INFO|Microsoft.AspNetCore.Hosting.Internal.WebHost|Request finished in 347.65ms 500

Мой файл startup.cs выглядит следующим образом

public void ConfigureServices(IServiceCollection services)
{
           //other code removed
            services.AddHsts(options =>
            {
                options.Preload = true;
                options.IncludeSubDomains = true;
                options.MaxAge = TimeSpan.FromDays(60);
            });

            services.AddHttpsRedirection(options =>
            {
                options.HttpsPort=443;
                options.RedirectStatusCode = StatusCodes.Status307TemporaryRedirect;
            });
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseDatabaseErrorPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }

            app.UseHttpsRedirection();
}

Как указано в сообщении об ошибке, я добавил порт 443 в методе services.AddHttpsRedirection (). Я также попытался указать https_port в appsettings. json.

Редактировать : Когда я удалил аутентификацию Google, все работало нормально. Я также запускал проект в производственном режиме локально, там я вижу, что он не может найти CliendId для Google Auth. Но идентификатор присутствует в UserSecrets. Json
Вот код, который я прокомментировал. Google auth работает локально.

            //services.AddAuthentication()
            //    .AddGoogle(googleOptions =>
            //        {
            //            googleOptions.ClientId = Configuration.GetSection("Google")["Authentication:Google:ClientId"];
            //            googleOptions.ClientSecret = Configuration.GetSection("Google")["Authentication:Google:ClientSecret"];
            //        });

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

Ваш порт 443. Возможно, занят.

0 голосов
/ 06 февраля 2020

Проблема была связана с UserSecrets. Json, поскольку она не была доступна в производственной среде, поэтому, когда я пытался добавить аутентификацию Google, возникла ошибка. Как предложил @John Hanley, когда я добавил try catch, я получил ошибку iishttpserver. Который приходил из-за идентификатора клиента и секрета клиента не удалось найти. Поэтому я добавил идентификатор клиента и секреты клиента в набор настроек приложения. json

, поэтому после проверки MSDN я узнал, что UserSecrets. json доступен только в разработке.

...