WedX - журнал о программировании и компьютерных науках

Приложение .Net Core 2.x, размещенное на сервере IIS. Схема проверки подлинности не указана.

У меня есть базовое веб-приложение .Net, размещенное в среде Windows Server 2016 с установленным ядром .Net.

Я обнаружил, что после того, как я включил фильтр в метод ConfigureServices в Startup.cs, опубликовал на сервере IIS, запустил приложение, я получил ошибку Http 500.

Это код в моем методе ConfigureServices и Configure.

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc()
        .AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());

    services.AddDbContext<LocalAppDBContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

    services.AddSingleton<IConfiguration>(Configuration);

    services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

    services.AddAuthentication(IISDefaults.AuthenticationScheme);

            // Global filter
            services.AddMvc(config =>
    {
        var policy = new AuthorizationPolicyBuilder()
                            .RequireAuthenticatedUser()
        config.Filters.Add(new AuthorizeFilter(policy));
    });
}


public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseBrowserLink();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
    }

    app.UseStaticFiles();

    app.UseAuthentication();

    app.UseStatusCodePagesWithRedirects("/Error/StatusCode/{0}");

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Requests}/{action=Index}/{id?}");
    });
}

в файле журнала я вижу это поверх всего вывода стека:

сбой: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware [0]
Произошло необработанное исключение: не была указана authenticationScheme, и не было найдено DefaultChallengeScheme.
System.InvalidOperationException: не было указано authenticationScheme, и не было DefaultChallengeScheme нашел.

После некоторого поиска в Google кажется, что схема аутентификации не определена.

Но над строкой services.AddMvc у меня есть AddAuthentication, который использует схему аутентификации IISDefaults:

services.AddAuthentication(IISDefaults.AuthenticationScheme);

Любая идея, что вызывает эту внутреннюю ошибку сервера 500 в моем случае?


  • Прошу прощения, Кирк, ваш обновленный код действительно изменил ошибку после того, как я удалил начальные строки services.Addauthentication. Вот ошибка: сбой: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware [0] Произошло необработанное исключение: Обработчик проверки подлинности не настроен для проверки подлинности для схемы: Windows System.InvalidOperationException: Обработчик проверки подлинности не настроен для проверки подлинности для схемы: Окна 19.09.2018
  • Это была моя глупая ошибка, приложение в IIS не включало аутентификацию Windows, а по умолчанию использовало анонимную аутентификацию. 19.09.2018
  • Это более распространенная ошибка, чем вы думаете. Я рада, что вы разобрались. Спасибо, что дал мне знать. 19.09.2018
  • Спасибо большое за вашу помощь. Ваши предложения действительно дали мне возможность узнать больше о методах внутри файла Startup.cs. 20.09.2018

Ответы:


1

Код в моем вопросе правильный.

Это глупая ошибка, я не включил проверку подлинности Windows, когда пытаюсь использовать учетную запись домена для проверки подлинности доступа пользователя. По умолчанию используется анонимная аутентификация.

19.09.2018
Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]