如何在本地 IIS 而非 Express 中调试 ASP.NET 5 Web 应用程序
Posted
技术标签:
【中文标题】如何在本地 IIS 而非 Express 中调试 ASP.NET 5 Web 应用程序【英文标题】:How to debug an ASP.NET 5 web app in local IIS not Express 【发布时间】:2016-03-12 23:58:43 【问题描述】:因此,在您的本地 IIS
中为您的 4.6(和 ASP.NET Web 应用程序设置调试非常容易。但是,我在ASP.NET 5
中看不到任何方法可以做到这一点。我看到IIS Express
、ef
和web
。我错过了什么吗?如何设置它以便我可以推送 Play
并让它拉出 Chrome 选项卡并在我的本地 IIS
中对我的 web app
进行全面调试?
【问题讨论】:
这还没有在工具中实现,但是有些人已经手动让它工作了:github.com/tuespetre/dnx-watch-iis 【参考方案1】:也许不完全是你需要的,但你可以调试它。
在开始调试之前,您需要将项目重新发布到 IIS 中指定的路径。 浏览到应用程序的任何网页,以便启动该过程。 然后在你的VS里面去Debug -> Attach to process
。查找并选择dotnet.exe
。可能有几个,所以勾选Show processes from all users
可以显示更多记录。
例如,我在 IIS 上用于 .net 核心应用程序的池以 NetworkService 身份运行,因此我很容易识别我需要附加到的 dotnet.exe
进程(附加到进程 弹出窗口有 User Name 列,其中包含身份信息)。
最后,VS 将开始调试。类似.net framework + attach to w3wp.exe
的步骤
【讨论】:
这可行,但肯定不像推送 Play 那样简单。【参考方案2】:如果您指的是控制器调试,您只需确保在您创建的代码行处正确设置断点。之后,您所要做的就是通过 IIS Express 运行,一切顺利,当您必须执行 stepover 等时,VS 会自动提示您查看 IDE。
从那里您将能够使用 VS 顶部栏上的“调试”选项中的各种调试窗口检查您的代码。
顺便说一句,如果您使用 .NET Core 对本地 IIS 的状态进行了彻底的查找,那么目前还没有办法这样做..
How to configure ASP.NET Core 1.0 to use Local IIS instead of IIS Express?
为了进一步强调使用本地 IIS 的无意义,这里引用 article:
但是,使用 ASP.NET Core 几乎没有理由运行 开发期间的完整 IIS。为什么?因为 ASP.NET Core 应用程序 实际上并没有在 IIS 内部运行。无论你是从哪里来的 IIS、IIS Express 还是直接从 dotnet 运行 命令行 - 您正在运行完全相同的代码,并且在大多数情况下 完全相同的执行环境。真的在 IIS 内部运行 不再给你买任何你无法轻易模拟的东西 命令行环境。
【讨论】:
不,我特别不想要 IIS Express,而是本地 IIS。 我不明白你为什么要使用本地 IIS。尽管如此,由于 .NET Core,使用本地 IIS 在 .NET 中并没有显着差异。 因为我的解决方案包含 20 多个需要同时运行的微应用和服务。现在我需要运行 20 个 VS 实例才能正确运行我的应用程序。相反,我希望它们都在本地 IIS 中运行,并且只为我当前正在使用的微应用运行 1 个 VS 实例。 项目-> 属性-> 调试-> 选中“启动外部程序”并单击 ... 按钮,导航到其他程序的 .exe。然后确保在您的解决方案 -> 属性 -> MultipleStartup Projects 中检查它。Start external program
可能是 ASP.NET
的某些旧版本中的一个选项,但在 ASP.NET Core
中不是一个选项以上是关于如何在本地 IIS 而非 Express 中调试 ASP.NET 5 Web 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
如何配置 IIS Express 以调试子目录中的应用程序?
Visual Studio:如何使用 IIS Express 和跨项目引用在共享项目中调试 TypeScript(无链接或复制文件)