我的.net核心asp mvc app中的Windows身份验证存在一个奇怪的问题。
我最初在BuildWebHost
中设置了Program.cs
:
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseHttpSys(options =>
{
options.Authentication.Schemes =
AuthenticationSchemes.NTLM | AuthenticationSchemes.Negotiate;
options.Authentication.AllowAnonymous = false;
})
.Build();
从vscode调试时这很好用。
我被提示以域用户身份登录,一切都很好。
但是,当我发布到我的Windows 7“服务器”IIS时,整个应用程序都失败并显示this error
HTTP错误502.5 - 进程失败
此问题的常见原因:
申请流程无法启动
应用程序流程已开始但随后停止
应用程序进程已启动但无法侦听已配置的端口
所以我将BuildWebHost
改为
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
现在它在服务器上运行得很好,但是当我尝试从vscode调试时,我得到了
InvalidOperationException:未指定authenticationScheme,且未找到DefaultChallengeScheme。
这非常不方便,因为它可以工作,但每次我想发布或测试/调试应用程序时,我都必须删除那段代码。
我该如何解决这个问题,或者至少解决原因是什么?
答案 0 :(得分:1)
IIS需要Kestrel,它不能与HttpSys一起使用。不幸的是,Kestrel没有自己的Windows身份验证,它依赖于IIS。 IIS是否为您的开发环境提供了一个选项?否则,您需要做一些尴尬的事情来检测您的环境,并相应地选择您的服务器。