当前位置: 首页 > 编程语言 > C#

ASP.NET 5 beta 8中的Windows身份validation支持分享

时间:2023-04-10 18:49:09 C#

C#学习教程:ASP.NET5beta8中的Windows身份验证支持大多数API端点都有一个[Authorize]属性,并且在IIS和VisualStudio中的项目属性上启用了Windows身份验证。这在beta7中一切正常。但是,在beta8中,这不起作用。使用完全干净的项目很容易重现:使用ASP.NET5WebAPI模板创建新项目。获取项目(不是解决方案)的属性,转到“调试”选项卡,启用Windows身份验证并禁用“匿名”。保存更改。按F5并让它尝试运行该项目。结果:尝试确定托管应用程序的DNX进程的进程ID时出错。现在返回项目属性并启用匿名。同时启用Windows。保存更改。转到您的控制器并添加[Authorize]属性。再次F5。结果:项目启动,但WebAPI返回500。在输出窗口中注意:Microsoft.AspNet.Mvc.Controllers.ControllerActionInvoker:警告:过滤器“Microsoft.AspNet.Mvc.Filters.AuthorizeFilter”上的请求授权失败。该项目在发布到IIS时也不起作用。如beta8公告中所述,托管模型已更改,IIS正在将请求传递给Kestrel。服务器页面没有任何迹象表明Kestrel支持Windows身份验证。是否有一些技巧可以让Windows身份验证在beta8中工作?这似乎是使用IISExpress时VisualStudio调试工具中的一个已知错误。在修复之前,我发现的唯一解决方法是通过运行WebListener而不是IISExpress进行调试。要进行设置,请在Startup.cs的Configure方法中添加://如果我们是自托管,则启用集成身份验证(如果我们使用//IIS,这将在IIS配置级别完成).varlistener=app.ServerFeatures.Get();if(listener!=null){listener.AuthenticationManager.AuthenticationSchemes=AuthenticationSchemes.NTLM;然后在project.json中添加weblistenercmd,如下所示:},...或类似的。然后,如果您使用weblistener配置文件而不是IISExpress(或Kestrel下不支持NTLM的Web)进行调试,您应该能够在解决IISExpress工具错误的同时继续工作。我相信,您需要将Microsoft.AspNet.Server.WebListener添加到您的project.json依赖项以启用WebListener。我发现,如果我直接在project.json中更改“web”命令,VisualStudio会相当积极地将其更改回来,因此按照Microsoft团队的建议添加一个单独的命令似乎会让每个人都满意。有一个已知的工具错误会阻止您禁用“匿名身份验证”:https://github.com/aspnet/Hosting/issues/419。重新启用它,您看到的问题应该会消失。确保您还添加了app.UseIISPlatformHandler();在您的Configure方法的早期:需要解析与IIS流的令牌对应的Windows标识。同样在web.config中你应该设置forwardWindowsAuthToken="true",例如:以上是C#学习教程:WindowsauthenticationinASP.NET5beta8supportsallcontentshared,如果对大家有用需要了解更多更多关于C#学习教程,希望大家多多关注—本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢