ASP.NET MVC6 Beta8和Windows身份验证

Sam*_*Sam 6 asp.net-core-mvc

升级到Beta 8后,使用Windows身份验证进行调试在IIS Express中不起作用.我收到了一个错误

"尝试确定托管应用程序的DNX进程的进程ID时发生错误."

重现步骤:.

  1. 创建一个新项目,然后选择Empty web template.
  2. 在项目设置中,将IIS Express设置更改为使用Windows身份验证.取消选中匿名身份验证.
  3. 启用S​​SL.
  4. 调试项目.
  5. 错误出现了.

我正在使用Windows和Visual Studio的新安装.除安装文件外,是否需要下载任何其他软件?

Mar*_*hes 3

正如评论中所指出的,此错误存在一个开放的工具问题。同时,我已经能够使用 WebListener 成功调试,这需要以下两个更改:

Startup.cs

using Microsoft.AspNet.Http.Features;
using Microsoft.Net.Http.Server;
Run Code Online (Sandbox Code Playgroud)

并在Configure方法中添加:

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

添加project.json一个新的 weblistener 命令如下:

"commands": {
  "weblistener": "Microsoft.AspNet.Server.WebListener --config hosting.ini",
  "web": "Microsoft.AspNet.Server.Kestrel"
},
Run Code Online (Sandbox Code Playgroud)

并确保您的dependencies部分中有 WebListener

"Microsoft.AspNet.Server.WebListener": "1.0.0-beta8",
Run Code Online (Sandbox Code Playgroud)

当我从 beta 7 升级时,我必须将 Hosting.ini 文件更改为 json 格式 - 不知道这是否重要!

完成此操作后,您应该能够使用 weblistener 而不是 IIS Express 进行调试。使用 web(即 kestrel)进行调试不起作用,因为 kestrel 不(也不会)支持 NTLM 身份验证。

我发现,如果我直接在 project.json 中更改“web”命令,Visual Studio 会相当积极地将其更改回 kestrel,因此按照 Microsoft 团队的建议添加单独的命令似乎会让一切顺利。