首页 文章

ASP.NET MVC6 Beta8和Windows身份验证

提问于
浏览
6

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

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

重现步骤: .

  • 创建一个新项目,然后选择Empty web template .

  • 在项目设置中,将IIS Express设置更改为使用Windows身份验证 . 取消选中匿名身份验证 .

  • 启用SSL .

  • 调试项目 .

  • 出现错误 .

我正在使用Windows和Visual Studio的新安装 . 除了installation files之外,我还需要下载任何其他软件吗?

1 回答

  • 3

    如评论中所述,有一个open tooling issue for this bug . 与此同时,我已经能够使用WebListener成功调试,需要进行以下两项更改:

    Startup.cs

    using Microsoft.AspNet.Http.Features;
    using Microsoft.Net.Http.Server;
    

    并在 Configure 方法中添加:

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

    project.json 中添加一个新的weblistener命令,如下所示:

    "commands": {
      "weblistener": "Microsoft.AspNet.Server.WebListener --config hosting.ini",
      "web": "Microsoft.AspNet.Server.Kestrel"
    },
    

    并确保在 dependencies 部分中有WebListener

    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta8",
    

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

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

    我发现,如果我直接在project.json中更改了"web"命令,Visual Studio会将其有效地更改回kestrel,因此添加一个单独的命令as recommended by the Microsoft team似乎可以让一切都快乐 .

相关问题