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



我刚刚将我的ASP.NET(Framework(MVC应用程序升级到ASP.NET Core 2.2。这个过程足够痛苦,但是在本地运行Web应用程序更加痛苦。

在IIS Express中运行的问题:

  • 如果我使用F5启动该应用(启用调试(,那么一旦我停止调试浏览器窗口关闭,因此更改任何代码后,我必须每次都在主页上重新开始。
  • 如果我使用CTRL F5启动该应用程序(无调试(,则在重建几个网站似乎死亡之后,这意味着任何新的页面请求都没有找到host。然后,我必须再次ctrl f5才能再次进行,但是我又回到了主页上。
  • Visual Studio 2019有时决定在我现有的Chrome窗口中启动该网页,但有时决定在全新的Chrome窗口中启动它。经过几分钟的开发,我留下了多个标签和窗口。

在IIS中运行的问题:

  • 它运行的唯一方法是,如果我手动编辑我的web.config,以使过程路径("dotnet"(和参数("./bin/Debug/Housters.Web.dll"(具有正确的值。Visual Studio喜欢每次构建或运行应用程序时都会注入ASPNETCORE processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%"中,尽管我在.csproj中有IsTransformWebConfigDisabled = true。因此,我经常不得不进入 git 并恢复这些更改,否则我的应用程序将落回到可怕的ANCM中处理程序处理程序负载故障页面。
  • 假设Web.config具有正确的值,在浏览器中运行应用程序后,我无法再构建项目。相反,它给出了错误:错误MSB3027无法将"objDebugnetcoreapp2.2Housters.Web.dll"复制到"binDebugHousters.Web.dll"。超过重试计数10。失败。该文件由:" IIS工作过程(15496("锁定。IIS正在使用ASP.NET Core Web应用程序的DLL,因此我实际上无法更新我的代码并构建它,这真是太好了。解决方法是回收我的IIS应用程序池,但是当您需要在每次重建之前需要进行时,这会变得很快。
  • 连接到w3wp.exe进程不会引起任何断点,所以我不能在IIS下进行调试(IIS Express调试正常工作。(
  • 我在启动集群中配置的启动配置文件被忽略。例如,当我选择我的IIS启动配置文件(将" http://localhost"作为启动图和applicationurl(时,如果我f5或ctrl f5打开" http://localhost:62551/",则在browser窗口中。

所以这就提出了一个问题,其他人如何在本地开发机器上开发/运行/调试其ASP.NET核心应用程序?也许大多数Web开发人员已经从ASP.NET转移到纯粹的JavaScript框架,例如Angular,React和Vue,所以我只是不幸吗?或者我缺少会使ASP.NET核心发展减少痛苦的东西?

当前,与过去相比,ASP .NET核心的体验大大提高。

但是,仍然存在某些故障。对于IIS Express(在生产中我们使用Kestrel(的问候,您可以使用Visual Studio 2017和2019(它们对我们有用(尝试这些东西:

如果我使用F5启动该应用程序(启用调试(,那么一旦我停止调试浏览器窗口关闭,因此更改任何代码后,我必须每次都在主页上重新开始。

只是不使用页面:打开选项卡/页面,产生另一个选项卡/页面,然后使用后者进行调试。这样,您的会议将与生产环境一样类似。我们有Firefox作为默认浏览器,但通常会与Chrome进行调试,因此,不触摸Visual Studio产生的过程,使IIS Express活着。

如果我使用CTRL F5启动该应用程序(无调试(,则在重建几个网站似乎死亡之后,这意味着任何新的页面请求都不会说未找到主机。然后,我必须再次ctrl f5才能再次进行,但是我又回到了主页上。

似乎清洁整个解决方案两次解决了问题(至少对我们来说(。您第一次清洁解决方案时,IIS Express仍然为网站提供服务。显然,这应该是设计的方式(找不到有关此的文档(。

如果这不起作用,则可能会遇到视觉工作室服务。在这种情况下,关闭Visual Studio(我知道,这很痛苦(,等待一点,并在验证它们是Visual Studio的一部分后杀死当前运行的所有dotnet.exe

Visual Studio 2019有时会决定在我现有的Chrome窗口中启动网页,但有时决定在全新的Chrome窗口中启动它。经过几分钟的开发后,我留下了多个标签和窗口。

这是我之前所说的部分。虽然痛苦且资源昂贵,但是打开多个窗户可以生存。

供参考,我们在调试和释放(使用kestrel(上使用相同的配置。

最新更新