【问题标题】:How to label (set Title) for IIS Express process?如何为 IIS Express 进程添加标签(设置标题)?
【发布时间】:2011-09-17 13:23:21
【问题描述】:

我有一个包含多个网站的解决方案,并且我一直在使用 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

【问题讨论】:

  • 显示所有应用程序对我来说已经足够了 - 感谢您的提示
  • Connect 将按“设计”将其关闭。

标签: asp.net visual-studio-2010 iis-express


【解决方案1】:

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

System.Diagnostics.Debugger.Launch();

【讨论】:

    【解决方案2】:

    我从一个批处理文件运行 IISExpress 实例。然后 cmd 文件的名称在 Attach to Process 中显示为进程名称。

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

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

    将在附加到进程的标题列中显示为

    MySite

    【讨论】:

    • 有没有简单的方法来获取站点ID?
    • 据我所知,只有进入并在 applicationhost.config 文件中检查它。您可以在 %Your user folder%\Documents\IISExpress\config 中找到它。您也可以使用 /site:[site-name] 参数运行 iisexpress.exe,而不是使用 site-id
    【解决方案3】:

    别忘了引用 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
    );
    

    【讨论】:

    • 这当然不是对你问题的现成答案,但它可以用来做出这样的答案。
    【解决方案4】:

    我同意需要为“附加到进程”对话框标记进程。但是,对于您的具体情况,有一种解决方法。

    解决方法:

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

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

    【讨论】:

    • 仅供参考,我通常不会回答解决方法,但 OP 的问题很容易改写为“如何同时调试多个解决方案”。附加到流程,将是一个有效的答案,其中包含 OP 已经指出的缺失标题的警告。但这种解决方法也是一个有效的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2012-09-09
    相关资源
    最近更新 更多