【问题标题】:Determining the port a Visual Studio Web App runs on确定运行 Visual Studio Web 应用程序的端口
【发布时间】:2010-09-13 05:49:43
【问题描述】:

我一直在使用来自 this blog entry 的宏将 Visual Studio 调试器附加到我当前正在处理的 Web 应用程序的已运行实例。但是,如果我有多个 Visual Studio Web 服务器实例在运行,那么它会附加到哪个实例就很幸运了。

有没有办法确定在 Web 项目中配置了哪个端口,以便我可以修改宏以将其选择的进程过滤到那个端口?


更多信息

我知道您可以将端口号设置为静态端口号 - 我从一开始就这样做了,我想要确定的是如何以编程方式确定定义的端口号,以便我可以修改宏(在链接的博客条目中)并确保它连接到 Visual Studio Web 服务器的正确实例。

我让事情运行的方式是我有两个(或更多)Visual Studio 实例正在运行,每个实例都包含一个解决方案,其中包含一个 Web 项目和一个或多个其他项目 - 通常是一个安装程序项目),所以当我从给定的 Visual Studio 实例触发宏,我想在该实例加载的解决方案中找到 Web 项目并确定它运行的端口。

【问题讨论】:

  • 我想我遗漏了一些明显的东西 - 我仍然不明白这个问题。例如,您是否同时在两个以上的 Web 应用程序中工作,而当您尝试调试一个时,它会附加到另一个 Cassini 实例而不是它自己的实例?或者你是从另一个项目附加的?
  • 我加载了多个 Visual Studio 实例,我已对问题进行了进一步说明:=)

标签: asp.net visual-studio


【解决方案1】:

此代码将为您提供当前解决方案中项目的所有端口的列表:

Sub GetWebProjectPorts()
    Dim ports As String

    For Each prj As Project In DTE.Solution.Projects
        For Each p As EnvDTE.Property In prj.Properties
            If p.Name.Contains("DevelopmentServerPort") Then
                If Not String.IsNullOrEmpty(ports) Then
                    ports += ","
                End If
                ports += p.Value.ToString()
            End If
        Next
    Next

    MsgBox(ports)
End Sub

【讨论】:

    【解决方案2】:

    如果这可以帮助你,我已经找到了一个链接,可能实际上是这个技巧。

    但是,它需要调用 DllImport 并且很有趣。

    你可以看看那篇文章:http://bytes.com/forum/thread574901.html

    来自实际网站的报价:

    通过调用 iphlpapi.dll 使用 PInvoke 互操作。谷歌四处寻找 GetExtendedTcpTable 和 iphlpapi.dll, 我相信你会发现一些现有的 东西。

    威利。

    最后一个:

    这里有一些 API 方法供我使用 目的:

    GetTcpTable()
    AllocateAndGetTcpExTableFromStack()
    GetExtendedTcpTable()

    我写了一个小程序,可以 向我展示所有进程 属于 TCP 端口(与 AllocateAndGetTcpExTableFromStack()) 在 Windows XP 下运行。

    现在我的问题是,在 Windows 下 2000 我不能用 AllocateAndGetTcpExTableFromStack() 或 GetExtendedTcpTable() 所以我只能 使用 GetTcpTable() 列出所有 TCP-Ports 但没有归属地 进程。

    有人有同样的问题吗? 还有另一种方式(.Net 或 WMI 等)来解决我的问题?

    提前致谢,

    维尔纳

    【讨论】:

      【解决方案3】:

      如果您转到 Web 项目的属性并查看“Web”选项卡下,您可以指定项目将始终在哪个端口上启动。然后就可以点击“Enable Edit and Continue”,这样就不用停止调试,不断重启了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-19
        相关资源
        最近更新 更多