【发布时间】:2019-09-26 16:47:35
【问题描述】:
我刚刚将我的 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 喜欢在我每次构建或运行我的应用程序时注入 aspNetCoreprocessPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%",尽管我的.csproj中有IsTransformWebConfigDisabled = true。所以我必须经常进入 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 开发不那么痛苦的东西?
【问题讨论】:
-
您找到问题 OP 的答案了吗?我也有类似的问题。
-
@fdrobidoux 微软正在尝试改进 IIS 对 ASP.NET Core 的支持,但它的体验仍然比 .NET Framework 差得多。这是一个很好的问题:developercommunity.visualstudio.com/content/problem/546858/…
标签: asp.net asp.net-core