如何确定哪个 IIS Express 实例正在使用端口?

2023-12-23

我想以编程方式终止正在运行的占用特定端口的 IIS 实例,但似乎无法确定哪个 IIS 实例正在使用特定端口。

netstat.exe 只是显示该进程的 PID 为 4,但那是系统进程。“netsh http 显示 urlacl”根本不显示占用的端口。

IIS Express Tray 程序以某种方式知道这一点。当我尝试在端口被占用时启动另一个 IIS Express 实例时,出现以下错误:
“端口“40000”已被进程“IIS Express”(进程 ID“10632”)使用。

有人知道我如何获得这些信息吗?


看起来 PID 是 4(系统),因为实际监听套接字位于一个名为http https://msdn.microsoft.com/en-us/library/windows/desktop/aa364510(v=vs.85).aspx.

我查看了 iisexpresstray.exe 使用什么来提供所有正在运行的 IISExpress 应用程序的列表。值得庆幸的是,它是易于反编译的托管 .NET 代码(全部位于 iisexpresstray.dll 中)。

似乎至少有三种不同的方法来获取进程的端口号:

  1. Reading /port来自命令行参数(据我们所知不可靠)
  2. Running netsh http show servicestate view=requestq并解析输出
  3. Calling Microsoft.Web.RuntimeStatusClient.GetWorkerProcess(pid)并解析站点 URL

不幸的是,iisexpresstray.dll 中的大多数有用的东西都像IisExpressHelper类已声明internal(尽管我想象有工具可以生成包装器或复制程序集并公开所有内容)。

我选择使用 Microsoft.Web.dll。它位于我的 GAC 中,但由于某种原因没有出现在可在 Visual Studio 中添加为参考的程序集列表中,因此我只是从我的 GAC 中复制了该文件。一旦我有了 Microsoft.Web.dll,只需使用以下代码即可:

    using (var runtimeStatusClient = new RuntimeStatusClient())
    {
      var workerProcess = runtimeStatusClient.GetWorkerProcess(process.Id);
      // Apparently an IISExpress process can run multiple sites/applications?
      var apps = workerProcess.RegisteredUrlsInfo.Select(r => r.Split('|')).Select(u => new { SiteName = u[0], PhysicalPath = u[1], Url = u[2] });
      // If we just assume one app
      return new Uri(apps.FirstOrDefault().Url).Port;
     }

您也可以致电RuntimeClient.GetAllWorkerProcesses仅检索实际的工作进程。

我调查了RegisteredUrlsInfo(在 Microsoft.Web.dll 中)也发现它使用两个 COM 接口,

  1. IRsca2_Core (F90F62AB-EE00-4E4F-8EA6-3805B6B25CDD)
  2. IRsca2_WorkerProcess (B1341209-7F09-4ECD-AE5F-3EE40D921870)

最后,我读到 Microsoft.Web.Administration 的一个版本显然能够读取 IISExpress 应用程序信息,但信息非常稀缺,我在系统上找到的那个版本甚至不允许我实例化ServerManager没有管理员权限。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何确定哪个 IIS Express 实例正在使用端口? 的相关文章

  • Ninject 垃圾收集 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我在一个由
  • 检测 PowerShell 开关

    我正在用 C 开发 PowerShell cmdlet 并且有 true false switch 语句 我注意到 如果我希望 bool 为 true 我需要指定 SwitchName true 否则我会得到 Missing an argu
  • 如何禁用vim的switch case缩进?

    我目前正在与 Vim 作斗争 我似乎无法让缩进选项达到我想要的效果 这是我的设置 我将它们放在 vimrc 的底部以确保它们优先 正如你所看到的 我有点疯狂 所以我尝试关闭几乎所有的东西 set cindent set cinkeys o
  • 抛出并保留堆栈跟踪不符合代码分析所描述的预期

    进行代码分析给了我项目 CA2200 CA2200 重新抛出以保留堆栈详细信息 func 重新抛出捕获的异常并将其显式指定为参数 请改用不带参数的 throw 以保留最初引发异常的堆栈位置 我已经实现了该建议 但无论如何我似乎都得到了相同的
  • 具有元组类型子集相应参数的模板函数

    我想这样写函数find multi set
  • 使用加法求阶乘

    我正在尝试创建一个 C 代码来查找整数的阶乘 以便我可以将代码转换为汇编语言 我的代码似乎将第二个整数 乘 两次 即 5 4 4 3 我似乎无法找出原因 请帮助 define N 5 int main int j 0 int i 0 int
  • 如何从二维字节数组创建图像?

    在我的项目中 经过长时间的处理 我从红外摄像头获得了一个二维字节数组 字节数组中保存图像 如何在 C 中将该字节数组转换为图像 我知道通过 MemoryStream ms new MemoryStream byteArray System
  • 家庭自动化图书馆[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是一名 C 开发人员 希望将家庭自动化作为一种 爱好 我做了一些研究 但想知道是否有人知道支持 In
  • 如何使这些 std::function 参数明确?

    传递 lambda 时 以下函数重载是不明确的 我发现std function can be 由大多数可调用类型构造 https stackoverflow com a 22543082 1079110 即使他们的签名不匹配 所以编译器无法
  • x86 中有加速 SHA (SHA1/2/256/512) 编码的指令吗?

    一个例子 在x86 是硬件加速 AES 的指令集 http en wikipedia org wiki AES instruction set 但是x86中是否有加速SHA SHA1 2 256 512 编码的指令 以及在x86上编码SHA
  • linux下无法创建僵尸进程

    嗯 我有一个奇怪的问题 我无法在我的项目中创建僵尸进程 但我可以在其他文件中创建僵尸进程 有简单的说明 int main if fork 0 printf Some instructions n else sleep 10 wait 0 r
  • 如何消除字符串中的所有换行符?

    我需要删除字符串中出现的所有换行符 来自数据库 我使用下面的代码来做到这一点 value Replace r n Replace n Replace r 我可以看到至少有一个角色的行为就像行尾一样幸存了下来 字符代码是8232 http w
  • SELECT 语句会受到 SQL 注入攻击吗?

    实际上有2个问题 我知道我必须尽可能多地使用存储过程 但我想知道以下内容 A 我可以从 SELECT 语句 例如 Select from MyTable 获得 SQL 注入攻击吗 B 另外 当我在 ASP NET 中使用 SQLDataSo
  • 如何重新解释或转换具有已知内存布局的对象而不出现未定义的行为

    我有一个矩阵类transposedView 我多年来一直使用该方法作为行向量和列向量之间的 零开销 转换 template
  • 如何在C#中从XML读取键值

    我有下面的 xml 格式文件 名为 ResourceData xml
  • 将 C++ 连接到 C#

    我一直在用 C 编写一个程序 注意到 C 中有一个库 别人写的 我想链接到我的代码 但我不知道该怎么做 有人可以提出建议吗 怀疑这很重要 但我正在使用带有 MSVC2010 的 Windows 7 提前致谢 您可以尝试在 C CLI 模式下
  • 如何在 C++ 中将向量迭代器转换为 int

    我正在寻找 C 向量中的一个元素 当我找到它时 我想以数字形式 整数 浮点数 获取找到的元素的索引 我天真的尝试是这样的 int x int index vector
  • 使用 async/await 抛出和捕获异常的正确方法

    全部请拿下面的二维码 Task
  • Wpf TextBlock 中的垂直文本

    是否可以垂直显示 TextBlock 中的文本 以便所有字母彼此堆叠 不使用 LayoutTransform 旋转 还没有人提到使用纯 XAML 垂直堆叠任意字符串的字母 不旋转它们 的明显而简单的方法
  • NHibernate 中的无状态会话初始化关联实体或集合失败

    我正在尝试与第 3 方 dll 中的实体建立关联 由于某些原因 我必须使用StatelessSession With StatefullSession它可以工作 但不适用于无状态 这个想法是允许第三方添加一个表并在我查询主表时获取其数据 我

随机推荐

  • 自提升脚本+执行策略

    我正在尝试使用问题中的以下代码 PowerShell 以管理员身份运行命令 https stackoverflow com questions 7690994 powershell running a command as administ
  • ZF2 字段集和表单绑定

    我正在尝试创建一个带有表单的页面 其中包含两个字段集 每个字段集应填充一个不同的表 我可以像相册教程中那样轻松创建一个表单 并像这样绑定数据 pageForm new PageForm pageForm gt bind page 我的 Pa
  • 如何将 EC2 负载均衡器与 AWS Lightsail 实例结合使用?

    我正在尝试在我的 AWS Lightsail 实例负载均衡器中安装通配符证书 但 Lightsail 实例不允许通配符证书 尽管 EC2 负载均衡器允许通配符证书 谁能解释一下如何将 EC2 负载均衡器与 Lightsail 实例结合使用
  • spring-boot - 有条件地在没有模板引擎的情况下提供静态内容

    我有一个静态页面 我想有条件地在特定 URL 上提供服务 使用 spring boot 我可以将页面放在static or public资源目录并将它们提供给每个人 但如果我想通过功能标志限制访问或禁用对它们的访问 那么这是不合适的 使用模
  • AngularJS:在指令内嵌入 ng-repeat

    我有一个指令 可以嵌入原始内容 对其进行解析 并使用原始内容中的信息来帮助构建新内容 它的要点如下 directive list function return restrict E transclude true templateUrl
  • 获取路由器出口外的路由数据

    有没有办法获得data组件中的参数是outisde路由器插座 const appRoutes Routes path component SitesComponent path pollutants newpollutant compone
  • 使用 hcitool 获取蓝牙连接的 RSSI,崩溃

    我读过很多关于获取蓝牙连接 RSSI 的可能性的 stackoverflow 帖子 看起来 Android 并没有通过任何 API 直接公开这一点 唯一的希望就是直接使用 bluez API 显然 一旦您与蓝牙设备建立连接 您就可以使用 h
  • 部署到 Springboot 应用程序后,Angular 路由不起作用

    我已经构建了一个 Springboot 应用程序 包括 Angluar5 我有一个 gradle 构建脚本 它将角度文件加载到我的 springboot 项目中 这些文件位于资源 静态我的 springboot 项目 当我启动我的应用程序时
  • 多个参数的 Lambda 表达式

    我理解 lambda 表达式本质上是一个内联委托声明 以防止额外的步骤 example delegate int Square int x public class Program static void Main String args
  • Java:如何将一个数组与另一个数组设置?

    我对 Java 很陌生 希望得到您的意见 所以 我有一个数组 String names Anna Jo String newNames Bob Sue Jane int totalLength names length newNames l
  • 如何构建 PHP/Node 代理在 https 网站上渲染外部 http 图像?

    我有一个正在运行的网站https 我必须从外部服务器 外部域 加载图像 该服务器没有 https 但只有一个http协议 有没有办法处理代理http通过 PHP 或 Node 获取图像 所以我可以像这样渲染图像 img src 这个想法是避
  • 使用 Python 请求登录 Instagram

    我正在尝试用 python 编写一个脚本来登录http insta friendorfollow com 并获取没有关注的人的列表 我想使用 请求模块 到目前为止我进行了多次尝试但没有成功 我的代码如下 import requests re
  • 将 Elasticsearch 从 1.4.3 迁移到 2.4 java 代码

    我正在从 Elasticsearch 1 4 3 迁移到 2 4 并且 替换了从弹性搜索文档引用的代码段 其他参考文献需要替换 andFilter 吗 Code TermQueryBuilder incPlatformFilter Quer
  • CQRS 事件不包含更新读取模型所需的详细信息

    关于 CQRS 我不明白一件事 当引发的事件不包含更新读取模型所需的详细信息时 如何更新读取模型 不幸的是 这是一种很常见的情况 示例 我将用户添加到组 因此我发送 addUserToGroup userId groupId 命令 该事件由
  • ASP.NET MVC 全局错误处理

    我有一个习惯HandleError处理 MVC 管道上的错误的属性 我有一个protected void Application Error object sender EventArgs e 方法在我的Global asax它处理来自管道
  • Typescript 期望将 undefined 作为参数传递

    打字稿 2 4 1 我正在尝试创建一个辅助函数来生成 redux 操作创建器 我有什么 interface IAction
  • 有没有解析美国地址的库?

    我有一个美国地址列表 我需要进入城市 州 邮政编码 州等 示例地址 16100 Sand Canyon Avenue Suite 380 尔湾 加利福尼亚州 92618 有谁知道有一个库或免费的 API 可以做到这一点吗 TOS 禁止将 G
  • 查找 S3 Bucket 并添加触发器以调用 lambda

    我正在使用新的AWS CDK 云开发工具包 在AWS上用Java构建基础设施 我必须做什么 查找 s3 存储桶并添加调用 lambda 函数的触发器 我做了什么 查找s3存储桶 IBucket bucket Bucket fromBucke
  • 我们如何在 JOOQ 中拥有@variable?

    我试图在 Jooq 中实现类似以下 MySql 查询的功能 Select CASE WHEN datecolumn IS NULL THEN outerval outerval 1 ELSE outerval END AS consec s
  • 如何确定哪个 IIS Express 实例正在使用端口?

    我想以编程方式终止正在运行的占用特定端口的 IIS 实例 但似乎无法确定哪个 IIS 实例正在使用特定端口 netstat exe 只是显示该进程的 PID 为 4 但那是系统进程 netsh http 显示 urlacl 根本不显示占用的