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

时间:2016-02-12 19:11:46

标签: c# asp.net iis asp.net-core dnx

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

我能够在IIS下使用Kestrel成功托管应用程序,但遗憾的是Kestrel并不支持NTLM(或者至少是我所阅读和体验过的)。 / p>

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

  • 使用WebListener而不是Kestrel和
  • 使应用程序正常工作
  • 使用Windows身份验证

当在本地使用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;
    }
}

非常感谢任何帮助。感谢您花时间阅读本文。

1 个答案:

答案 0 :(得分:1)

HttpPlatformHandler不支持WebListener,所以我认为你无法达到你想要的效果。有关详细信息,请查看github上的this thread