У меня есть базовое веб-приложение .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 в моем случае?