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

本文关键字:应用程序 核心 IIS NET ASP WebListener 何使用 Windows 身份验证 我的 | 更新日期: 2023-09-27 18:34:20

我正在尝试使用 WebListener 服务在 IIS 下托管一个 ASP.NET Core 应用程序,并试图让它使用 Windows 身份验证。但是,当为我的"Web"命令指定 WebListener 并在 IIS 下部署和设置应用程序时,我会收到一个 502 响应,其中包含消息"Web 服务器在充当网关或代理服务器时收到无效响应"。

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

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

  • 让应用程序使用 WebListener 而不是 Kestrel 工作,并且
  • 让它与 Windows 身份验证一起使用

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

我安装了最新的 HttpPlatformHandler (1.2(。我已将转发WindowsAuthToken设置设置为true。我在配置中禁用了匿名身份验证并启用了 Windows身份验证。我的目标是 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;
    }
}

任何帮助将不胜感激。感谢您抽出宝贵时间阅读本文。

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

HttpPlatformHandler不支持WebListener,所以我认为你无法实现你想要的。查看 github 上的这个线程以获取更多详细信息。