如何为IIS Express进程标记(设置标题)?

问题描述 投票:16回答:4

我有一个包含多个网站的解决方案,我一直在使用Cassini进行开发。当IIS Express出现时,我转换了其中一个网站使用它,一切运行正常。我刚刚移动另一个网站使用IIS Express并立即遇到调试问题:IIS Express没有标记其进程,所以现在我有两个正在运行,我不能在“附加到进程”中区分它们对话。

有没有办法让IIS Express设置流程标题?为了附加调试器,任何人都有任何提示告诉多个IIS Express实例?

更新执行此操作的四舍五入方法是执行IIS Express托盘图标的“显示所有应用程序”上下文菜单,并在附加调试器时从列表中引用PID。总比没有好,但如果有更好的方法会很好。

更新2我添加了一个连接问题:https://connect.microsoft.com/VisualStudio/feedback/details/729475/impossible-to-differentiate-iis-express-instances-when-attaching-debugger

asp.net visual-studio-2010 iis-express
4个回答
4
投票

或者,您可以添加此代码以从页面内部启动调试器。它既快速又简单,您只需使用隐藏的本地页面来调用它并启动调试器。

System.Diagnostics.Debugger.Launch();

2
投票

我从批处理文件中运行IISExpress实例。然后,cmd文件的名称将显示为“附加到进程”中的进程名称。

例如:在MySite.cmd文件中有这个

"C:\Program Files (x86)\IIS Express\iisexpress.exe" /siteid:1

将显示在Attach to Process中的Title列中

MySite


0
投票

不要忘记对System.Management的引用......

public static Regex siteNamePattern = new Regex("/site:\"(?<sitename>[^\"]+)\"", RegexOptions.Compiled);

...

var iisExpressSiteNames = new ManagementObjectSearcher(
    "select CommandLine, ProcessId from Win32_Process where Name='iisexpress.exe'")
    .Get().Cast<ManagementBaseObject>().ToDictionary(
    o => int.Parse(o["ProcessId"].ToString()),
    o => siteNamePattern.Match(o["CommandLine"].ToString()).Groups["sitename"].Value
);

0
投票

我同意需要为“附加到流程”对话框标记流程。但是,有针对您具体案例的解决方法。

解决方法:

如果在同一解决方案中有两个项目,则可以选择多个启动项目:

https://docs.microsoft.com/en-us/visualstudio/ide/how-to-set-multiple-startup-projects?view=vs-2015

Solution Properties

© www.soinside.com 2019 - 2024. All rights reserved.