如何使用 WebListener 和 Windows 身份验证在 IIS 下托管我的 ASP.NET 核心应用程序?

How Do I Get My ASP.NET Core Application To Host Under IIS Using WebListener and Windows Authentication?

我正在尝试使用 WebListener 服务在 IIS 下托管一个 ASP.NET 核心应用程序,并试图让它使用 Windows 身份验证。但是,当为我的 "web" 命令指定 WebListener 并且在 IIS 下部署和设置应用程序时,我收到 502 响应消息 "Web server received an invalid response while acting as a gateway or proxy server."

我能够在 IIS 下使用 Kestrel 成功托管应用程序,但不幸的是,Kestrel 不支持 NTLM(或者至少我已经阅读和体验过)。

所以,我正在寻找一种方法来:

当在本地使用 web 命令时,这一切都在本地工作(即 运行 它在 Visual Studio 中)。它只是在 IIS 下的 WebListener 中不起作用。

我安装了最新的 HttpPlatformHandler (1.2)。 我将 forwardWindowsAuthToken 设置设置为 true。 我在配置中禁用了 AnonymousAuthentication 并启用了 WindowsAuthentication。 我的目标是 1.0.0-rc1-update1.

这是我的 Startup.cs 文件中的一些配置代码:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    app.UseIISPlatformHandler();

    SetupWindowsAuthForLocalDev(app);

    app.UseMvc();
    app.UseDefaultFiles();
    app.UseStaticFiles();
    app.UseDeveloperExceptionPage();

    app.UseRuntimeInfoPage();

    app.UseAutoMapper();
    app.ConfigureStorageAccountForCors(_config);

    loggerFactory.AddSerilog();
}


private static void SetupWindowsAuthForLocalDev(IApplicationBuilder app)
{

    var listener = app.ServerFeatures.Get<WebListener>();
    if (listener != null)
    {
        listener.AuthenticationManager.AuthenticationSchemes =
            AuthenticationSchemes.NTLM;
    }
}

如有任何帮助,我们将不胜感激。感谢您花时间阅读本文。

HttpPlatformHandler 不支持 WebListener,所以我认为您无法实现您想要的。查看 github 上的 this thread 了解更多详情。