在什么情况下,我将使用`netsh http add urlacl`?


14

我试图了解在哪种情况下我将需要使用以下命令:

netsh http add urlacl url=http://server1:1234/ user=Everyone

就像使用hosts文件将我的特定地址连接到计算机一样吗?(我不这么认为)。

文档不说清楚(我):

Netsh是一个命令行脚本实用程序,它使您可以在本地或远程显示或修改当前正在运行的计算机的网络配置。Netsh还提供了脚本功能,使您可以对指定的计算机以批处理模式运行一组命令。Netsh还可以将配置脚本保存在文本文件中,以用于存档目的或帮助您配置其他服务器。

题:

有人可以在我想使用的地方提供一个现实生活场景(+实现)吗?

其他信息: 我读过这个问题,一个试图通过C#访问的人:

http://localhost:1234 可行,但是

http://server1:1234 失败

(但是-我不明白他为什么不使用hosts可以解决这个问题的文件)-但是,另一个人回答说netsh可以完成工作。
所以我想我在这里错过了一些东西。


我完全知道过去1年每天都使用什么主机文件。我不明白我的问题中的代码与主机文件有何不同。看起来他们俩都一样。遗憾的是,您的答案没有任何不同
Royi Namir

Answers:


18

您可以netsh http在修改的配置时使用,该配置http.syshosts文件完全不同,可以在较低级别的Windows上运行。此级别是一个一个处理一个HTTP服务器的运行在本地计算机中,所以涉及的请求来进入你的电脑,而不是那些打算出去到互联网。

这是Windows中用于服务URL请求的体系结构:

http.sys架构

http.sys 是侦听HTTP流量并基于URL向进程分发请求的驱动程序,因此多个进程可以在同一端口上侦听HTTP流量。

http.sys是Windows Server 2003中引入的。以前,应用程序只是在端点(IP:Port)上打开一个套接字,侦听传入的流量并对其进行解析。问题在于,这使得所有应用程序无法使用端口80(http)和443(https),因为使用套接字模型,在任何给定时间只有一个应用程序可以侦听端点。

Internet信息服务(IIS) Web服务器或使用HTTP Server API的任何应用程序侦听某些HTTP请求路径时,它们需要在上注册URL前缀http.sys。我们称此过程注册

当传入请求被选择http.sys并将其传递到正确的注册应用程序时,这称为路由

任何以管理员模式运行的应用程序都可以注册URL。非管理员应用程序需要使用netsh http add urlacl 来接收请求。

结论:由于您没有构建以非管理员模式运行的低级URL服务器,因此没有理由使用netsh http add urlacl

参考文献:


您能提供类似以下情形的情况吗:“用户希望通过...连接到您的iis。”
Royi Namir

这是应用程序与IIS并行工作的一种方法。如果它注册了URL前缀,则应用程序将直接而不是通过IIS来获取所有请求,这意味着它不需要被编写为IIS的扩展,甚至不需要安装IIS(从理论上讲,我不需要不知道实践中http.sys是如何独立于IIS的)。
harrymc '17
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.