如何在VS Code中本地运行.Net Core 2.0应用程序,就像Visual Studio使用SSL一样

时间:2017-11-11 01:44:57

标签: asp.net-core visual-studio-code visual-studio-2017 iis-express kestrel-http-server

因此,我们已经迁移到.net核心的Web应用程序,虽然它在Visual Studio 2017中运行良好,但是因为Visual Studio使用其“launchSettings.json”文件来配置IIS Express的工作/启动方式 - 我,在我的生活中,无法弄清楚如何让VS Code运行该项目。问题是,我们只使用HTTPS并且总是让IIS Express使用自签名locahost证书来允许这样做,因此在本地调试站点时,我们总是使用https://localhost:44300。如上所述,在Visual Studio的launchSerttings.json文件中输入此URL时,此工作正常,但VS Code不使用此功能,我可以在此找到的唯一答案始终是必须使用Kestrel Server的.Listen()方法并使用自签名证书和密码来允许使用HTTPS端口。 1)这似乎很愚蠢,我必须添加这个“测试”代码才能在本地运行它,因为我在部署到Azure时不需要它,因为Azure为我们管理证书和网址。 2)Visual Studio 2017不需要任何关于Kestrel的规范来完成所有工作。所以,我很难相信在Visual Studio Code中没有一些扩展或进程可以实现Visual Studio代码,它允许IIS Express与.Net Core Kestrel Server进行通信。

梳理所有文档表明,ASPNetCoreModule是为IIS和Kestrel处理这种通信的,所以,我希望/猜测必须有一些方法来配置web.config文件的标记以包含一些会使这项工作。

我之前在VS Code中使用并尝试过其他IIS执行扩展,但是那些专注于项目web.config中的元素来启动IIS,因为它是.Net Core而不再存在于web.config中应用程序。在Web应用程序是.NET Framework 4.5.2应用程序时迁移到.Net Core之前,我已成功运行带有IIS Express Executor扩展的Web应用程序

所以,最终目标是我需要能够在浏览器中转到https://localhost:44300,并让我们的网站工作,但我不想在任何类型的测试证书中添加Program.cs或Startup.cs文件中的Kestrel配置。如果没有办法做到这一点,那么考虑到Visual Studio使它看起来应该非常简单,那将是非常令人失望的。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

能够使用以下步骤使其工作。

1)在VS Code或任何其他包含dotnet命令的类似扩展中安装IIS Express执行器

2)从https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer

下载Process Explorer

3)像往常一样启动Visual Studio IIS Express

4)打开Process Explorer(可能需要以Admin身份启动)并找到iisexpress.exe - > VSIISExeLauncher.exe

5)右键单击VSIISExeLauncher.exe并单击属性,然后找到" Environment"标签。在环境选项卡中,您将看到2个变量:LAUNCHER_PATH和LAUNCHER_ARGS。复制这些变量和值。

6)接下来找到你在VS代码中安装的扩展的配置文件(我的是项目根目录下的.vscode文件夹中的launch.json)。它可能会有一个"环境"或" env"用于将环境变量添加到启动参数的部分。添加从步骤5复制的两个参数。这些参数因人而异,因此参数的值对于您的计算机而言是唯一的。

7)从vs代码启动IIS-Express。我的特殊命令是#34; IIS-EE:启动IIS Express服务器"但会根据您安装的扩展名而有所不同。您可以点击F1以启动命令。

答案 1 :(得分:0)

Visual Studio本身使用太多技巧让你相信它很简单。但事实并非如此。

我在博文中记录了所有必要的细节,

https://blog.lextudio.com/how-visual-studio-launches-iis-express-to-debug-asp-net-core-apps-d7fd3677e3c3

如果您手动执行这些步骤,您应该能够以与VS相同的方式启动IIS Express,然后在Visual Studio Code中使用它。我知道有一些VSCode扩展试图与IIS和IIS Express集成,但我希望这些作者花更多的时间学习这种集成并改进扩展以完全支持这些场景。