gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 16:03:56 25 4
gpt4 key购买 nike

我刚刚将我的 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" ) 的正确值。 Visual Studio 喜欢注入(inject) aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%"每次我构建或运行我的应用程序时,尽管我有 IsTransformWebConfigDisabled = true在我的.csproj .所以我必须经常进入 git 并恢复这些更改,否则我的应用程序将退回到可怕的 ANCM In-Process Handler Load Failure 页面。
  • 假设 Web.config 具有正确的值,在浏览器中运行应用程序后,我无法再构建项目。相反,它给出了错误:错误 MSB3027 无法复制 "obj\Debug\netcoreapp2.2\Housters.Web.dll""bin\Debug\Housters.Web.dll" .重试次数超过 10。失败。该文件被“IIS Worker Process (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 开发不那么痛苦的东西?

    最佳答案

    目前,与过去相比,使用 ASP .NET Core 的体验有了很大改善。

    但是,某些故障仍然存在。关于 IIS Express(在生产中我们使用 Kestrel),您可以使用 Visual Studio 2017 和 2019(它们为我们工作)尝试这些东西:

    If I launch the app with F5 (to enable debugging), then once I stop debugging the browser window closes so I have to start over on the homepage each time after changing any code.



    只是不要使用页面:让选项卡/页面打开,生成另一个选项卡/页面并使用后者进行调试。这样,您的 session 将类似于生产环境。我们将 Firefox 作为默认浏览器,但我们通常使用 Chrome 进行调试,因此,不接触 Visual Studio 生成的进程可以使 IIS Express 保持活跃。

    If I launch the app with Ctrl + F5 (no debugging), after a few rebuilds the website seems to die, meaning that any new page requests just say host not found. I then have to Ctrl + F5 again to get it going again, but then I'm back on the homepage.



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

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

    Visual Studio 2019 sometimes decides to launch the webpage in my existing Chrome window on a new tab, but sometimes decides to launch it in an entirely new Chrome window. After several minutes of dev, I'm left with multiple tabs and windows open.



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

    作为引用,我们在调试和发布时使用相同的配置(使用红隼)。

    关于asp.net - 运行/调试 ASP.NET Core 应用程序的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56049421/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com