У меня есть основное веб-приложение .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, которая использует схему аутентификации IISDefaultse:
services.AddAuthentication(IISDefaults.AuthenticationScheme);
Любая идея, что вызывает эту 500 внутреннюю ошибку сервера в моем случае?