繁体   English   中英

HttpContext在带有OmniSharp扩展的Visual Studio Code中的工作方式有所不同

[英]HttpContext works differently in visual studio Code with OmniSharp extension

我安装了Visual Studio Code并安装了C#Extension

https://marketplace.visualstudio.com/items?itemName=ms-vscode.csharp

当我打开现有的Asp.Net Core 2项目时,我可以编辑文件并使用调试选项运行Web服务器(“ Debug > Start Debugging

但是然后我得到了关于HttpContext的空异常(Visual Studio 2017的调试不会引发此错误)

@User.Identity.Name.Replace(@"Domain\", string.Empty)

当我将代码更改为

@System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString();

有用。 因此在我看来,C#Extension运行的Web服务器或使用的设置与Visual Studio 2017不同。我假设问题可能出在Windows身份验证设置中 ,但我不知道在哪里进行设置?

任何想法 ?

这与托管Asp.Net Core 通常,有三个选项可用于启动新项目: IISIIS ExpressProject VS 2017启动时,您可以使用支持Windows Authentcation IIS Express ,并且可以通过launchsettings.json对其进行launchsettings.json

但是, VS Code不支持从IISIIS Express启动。 然后,在使用VS Code时,您将按Project选择.NET Core 当您使用自托管的Project ,您将需要使用Http.sysWindows Authencation支持Windows Authentication

为了解决您的问题,您可以修改如下的Program.cs以将Http.sysWindows Authentcation一起使用。

public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .UseHttpSys(options => {
                    options.Authentication.Schemes =
                        AuthenticationSchemes.NTLM | AuthenticationSchemes.Negotiate;
                        options.Authentication.AllowAnonymous = false;
                })
                .Build();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM