运行/调试ASP.NET Core应用程序的最简单方法

时间:2019-05-08 21:40:54

标签: asp.net asp.net-core

我刚刚将我的ASP.NET(框架)MVC应用程序升级到ASP.NET Core 2.2。这个过程很痛苦,但是更麻烦的是在本地运行Web应用程序。

在IIS Express中运行的问题:

  • 如果我使用F5启动该应用程序(以启用调试功能),则一旦停止调试,浏览器窗口就会关闭,因此每次更改任何代码后,我都必须从首页重新开始。
  • 如果我使用Ctrl + F5键启动应用程序(无调试),则经过几次重建后,网站似乎消失了,这意味着任何新页面请求都只是说找不到主机。然后,我必须再次按Ctrl + F5才能再次使用它,但随后我又回到了首页。
  • Visual Studio 2019有时决定在新标签页上的现有Chrome窗口中启动网页,但有时决定在全新的Chrome窗口中启动网页。经过几分钟的开发,我剩下多个选项卡和打开的窗口。

在IIS中运行的问题:

  • 它的唯一运行方式是手动编辑Web.config,使其具有processPath(“ dotnet”)和参数(“ ./bin/Debug/Housters.Web.dll”)的正确值。尽管我的.csproj中具有IsTransformWebConfigDisabled = true,但是每次我构建或运行应用程序时,Visual Studio都喜欢将其插入aspNetCore processPath =“%LAUNCHER_PATH%” arguments =“%LAUNCHER_ARGS%”。因此,我必须经常进入git并还原这些更改,否则我的应用将退回到可怕的ANCM进程内处理程序加载失败页面。
  • 假设Web.config具有正确的值,则在浏览器中运行应用程序后,我将无法再构建项目。而是显示错误:错误MSB3027无法将“ obj \ Debug \ netcoreapp2.2 \ Housters.Web.dll”复制到“ bin \ Debug \ Housters.Web.dll”。重试计数超过10。失败。该文件被锁定:“ IIS工作进程(15496)”。 IIS使用的是ASP.NET Core Web应用程序的dll,因此我实际上无法更新代码并进行构建,这很棒。解决方法是回收IIS应用程序池,但是当您需要在每次重新构建之前执行此操作时,此方法很快就会变旧。
  • 附加到w3wp.exe进程不会导致遇到任何断点,因此我无法在IIS下调试(IIS Express调试工作正常。)
  • 我在launchSettings.json中配置的启动配置文件将被忽略。例如,当我选择IIS启动配置文件(具有“ http://localhost”作为launchUrl和applicationUrl)时,如果我按F5或Ctrl + F5,它将在浏览器窗口中打开“ http://localhost:62551/”。

所以这引出了一个问题,其他人如何在其本地开发机器上开发/运行/调试他们的ASP.NET Core应用程序?也许大多数Web开发人员已经从ASP.NET转移到了纯粹的javascript框架(如Angular,React和Vue),所以我不走运吗?还是我缺少使ASP.NET Core开发的痛苦减轻的东西?

1 个答案:

答案 0 :(得分:0)

当前,与过去相比,ASP .NET Core的体验已大大改善。

但是,某些故障仍然存在。对于IIS Express(在生产中我们使用Kestrel)而言,您可以在Visual Studio 2017和2019中尝试这些操作(它们对我们有用):

如果我使用F5启动该应用程序(以启用调试功能),则一旦停止调试,浏览器窗口就会关闭,因此每次更改任何代码后,我都必须从首页重新开始。

仅不使用页面:打开选项卡/页面,生成另一个选项卡/页面,然后使用后者进行调试。这样,您的会话将类似于生产环境。我们将Firefox作为默认浏览器,但是我们通常使用Chrome进行调试,因此,不触摸由Visual Studio产生的进程即可使IIS Express保持活动状态。

如果我使用Ctrl + F5键启动应用程序(无调试),则在几次重建后网站似乎消失了,这意味着任何新页面请求都只是说找不到主机。然后,我必须再次按Ctrl + F5才能再次使用它,但随后我又回到了首页。

看来,清洗整个解决方案两次可以解决问题(至少对我们而言)。第一次清理解决方案时,IIS Express仍会为站点提供服务。显然,这应该是设计好的方式(无法找到有关它的文档)。

如果这不起作用,则可能发生Visual Studio服务卡住的情况。在这种情况下,请关闭Visual Studio(我知道这很痛苦),稍等片刻,然后在验证它们是否已成为Visual Studio的一部分之后终止当前正在运行的所有dotnet.exe

Visual Studio 2019有时决定在我现有的Chrome窗口的新选项卡上启动网页,但有时决定在全新的Chrome窗口中启动网页。经过几分钟的开发,我剩下多个选项卡和打开的窗口。

这是我之前所说的部分内容。尽管很痛苦而且资源昂贵,但是打开多个窗口可以使我们生存。

作为参考,我们在调试和发布(使用kestrel)时使用了完全相同的配置。