问题标签 [http.sys]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
512 浏览

c# - HttpListener 独立应用程序在 2008 年工作,在 2012 年失败

我有一个使用 HttpListener 的独立应用程序,该应用程序在 Server 2008 上运行良好,但在 2012 年却惨遭失败。每次尝试连接时,我都会得到一些:

当我从该机器上的命令提示符连接到侦听器端口时,它工作正常(我得到了我期望的响应)。

防火墙配置正确,我什至在禁用防火墙的情况下尝试过。

我已经尝试了几乎所有可能的组合netsh http add urlacl,包括:

我也尝试过访问每个主机名。

还具有多种用户组合:

我已经单独尝试过它们,也尝试过没有配置任何一个。

结果是相同的,但响应在 503 和 400 之间反弹(与上述相同的响应正文)。

IIS 没有在这台机器上运行。没有端口冲突。每台机器都有一个全新的安装,只有这个应用程序。

快把我头上的头发扯掉。

0 投票
1 回答
8275 浏览

c# - HTTPERR 日志:Request_Cancelled(在对 WCF 服务进行故障排除时)

我正在尝试对访问 WCF 自托管服务的 WCF 客户端上的“连接被远程主机强制关闭”错误进行故障排除。我在服务端机器上查看 System32\LogFiles\HTTPERR 中的 httperr 日志,每次在客户端上看到该错误时,我都会在日志中看到带有服务端点 URI 的条目。原因是“Request_Cancelled”。

我在任何地方都找不到关于这个原因意味着什么的任何信息。我可以猜到,但我想确定,因为它一定与我在客户中看到的错误有关。

HTTPERR 日志中的“Request_Cancelled”是什么?作为奖励,您能否进一步了解我的 WCF 问题?

0 投票
1 回答
792 浏览

asp.net - 如何使用 HTTP.sys 调试缓冲?

我正在运行 Windows 8.1,并且我有一个集成测试套件,它利用 HostableWebCore 来启动隔离的 ASP.NET Web 服务器进程。出于性能原因,我一次启动其中的 8 个,一旦它们启动,我向每个发送一个非常简单的 Web 请求,该请求由加载到每个中的 MVC 应用程序处理。每个实例都在侦听不同的端口。

问题是请求在 HTTP.sys (或现在所谓的任何名称)中被阻止(我相信)。如果我查看 fiddler,我可以立即(在几毫秒内)看到所有 8 个请求都达到了 ServerGotRequest 状态。但是,请求会处于这种状态 20-100 秒,具体取决于我一次并行运行的数量。

我怀疑这是 HTTP.sys 问题的原因是因为我必须等待它们中的任何一个响应的时间随着我并行启动的托管应用程序的数量而增加。如果我只启动一个托管应用程序,它将在大约 20 秒内开始响应。如果我启动 2,它们都会在约 30 秒内开始响应。如果我旋转 4,~40 秒。如果我启动 8,~100 秒(这是默认的 WebClient 请求超时)。

由于这种长时间的延迟,我有足够的时间附加调试器并在我的控制器操作中放置一个断点,并且该断点将在 20-100 秒的延迟后命中,这表明我的进程尚未收到请求。在大约 5-10 秒的冷启动 CPU 搅动之后,所有主机都处于空闲状态 20-100 秒。所有主机似乎同时接收到请求,好像有什么东西阻止了任何请求通过,然后突然让一切通过。

我的问题是,我无法找到任何有关如何调试 HTTP.sys 的信息。我怎样才能看到它在做什么?是什么导致阻塞?为什么要等待将请求转发给工人?为什么他们都一起度过了难关?

或者,如果有人知道我如何解决这个问题并让请求立即通过(无需等待),我将非常感激。

另一个注意事项:我可以看到系统(PID 4)在托管应用程序启动后立即注册以侦听我指定的端口。

附加信息:这是我的一个托管应用程序在下面的样子netsh http show servicestate

0 投票
0 回答
151 浏览

c# - 如何修复访问权限以在 localhost 上运行服务?

当我尝试在控制台应用程序的本地主机上运行我的 WCF 服务时,它会为我显示以下异常:

无法注册 URL http://+:8080/。您的进程无权访问此命名空间

我之前在 Windows 7 上运行过此服务。当我尝试在 Windows 8.1 上运行它时,问题就开始了。

我从网上找到的大多数主题都说解决方案是为当前用户注册 URL。我试过了,但没有用,我没有找到任何可以尝试的进一步步骤。

0 投票
1 回答
540 浏览

.net - 在不添加命名空间预留的情况下使用 System.Net.HttpListener 需要哪些权限?

我知道,如果用户是计算机上 BUILTIN\administrators 组的成员,您不需要添加命名空间保留来监听任何端口或 URI System.Net.HttpListener(即 HTTP.sys)。

但是,是否可以在不将该用户添加到 BUILTIN\administrators 组的情况下为用户或组提供所需的权限?

就我而言,我正在构建一个应用程序,该应用程序需要在许多不同且可配置的端口号上动态启动/停止许多 HttpListener 实例。不幸的是,我无法添加通配符端口号。我希望避免添加大量端口。

本文建议 ACL 逻辑与组相关联,而不是与一些底层权限相关联。

0 投票
1 回答
21359 浏览

iis - 在 Windows 10 的 HTTP.SYS 和 IIS 中禁用 HTTP/2 / SPDY

在 Windows 10 上进行测试时,我们看到了许多我以前从未见过的与早期 Windows 版本的浏览器不兼容问题。一些浏览器可以工作,但其他浏览器会报告 ERR_SPDY_PROTOCOL_ERROR。我对这个问题的快速搜索表明我并不孤单。

我的应用程序使用带有 HTTPS (TLS) 的 WWSAPI 和 HTTP.SYS。有谁知道如何在 Windows 10 上禁用 WWSAPI(使用 HTTP.SYS)中的 SPDY/HTTP/2?

我也很想获得完整的最新 Windows 10 HTTP.SYS 注册表设置列表。

请参阅下文了解我对此的回答。希望这对其他人也有帮助。

标记

0 投票
2 回答
1573 浏览

servicestack - HttpClient 将 HTTP GET 请求流水线化到 ServiceStack API

首先,我将 ServiceStack 作为提供 RESTful HTTP API 的服务器。

这是一个例子。

然后我用System.Net.Http.HttpClient它来访问它。正如这里所说, HttpClient它的大多数方法都是线程安全的,通过同一 TCP 连接发送 HTTP GET 请求。

所以我有一个 HttpClient 的单例实例,如下所示

然后我使用以下测试代码在先前的响应之后发送请求

smart sniffer中,我确实看到请求是在一个连接中发送的,它就像:

现在我将代码更改为即发即弃模式,如下所示。

这样请求就可以在不等待之前的响应的情况下发送,我希望请求和响应如下所示

这是HTTP 管道,性能非常好。

在此处输入图像描述

但是从我的测试中,我看到每个 HTTP GET 请求都建立了 3 个连接,但它没有按我的预期工作。

关于AllowPipelining财产,MSDN

应用程序使用 AllowPipelining 属性来指示管道连接的首选项。当 AllowPipelining 为真时,应用程序与支持它们的服务器建立管道连接。

那么,我想HttpClient是否支持流水线,问题出在 ServiceStack 中?ServiceStack 中是否有一些选项可以启用 HTTP 流水线?

0 投票
1 回答
5289 浏览

.net - 如何在 Windows Server HTTP.SYS 或 IIS 级别强制重定向 HTTP 400 错误

我想知道如何在 Windows Server HTTP.SYS 或 IIS 级别中强制重定向 HTTP 400 错误请求错误的错误页面,据我所知,IIS 仅支持大于 400,HTTP 400 是否有任何核心级别的方法. 错误的请求错误重定向?如果发生 400 错误,或者从 http.sys 内核获得一些回调?

更新说明:
-- 根据TechNet Art,无法自定义 IIS 中的以下 HTTP 错误:400、403.9、411、414、500、500.11、500.14、500.15、501、503 和 505

-- Peter Quest: For Me 响应来自服务器:Microsoft-HTTPAPI/2.0

0 投票
1 回答
2138 浏览

iis - HTTP.sys 如何将请求转发到工作进程

我想大致了解HTTP.sys 在 IIS 7.0 及更高版本中将请求转发到工作进程的方式。为此,我阅读了http://www.iis.net/learn/get-started/introduction-to-iis/introduction-to-iis-architecture上的帖子。然而,这篇文章中有两点似乎是矛盾的,让我感到困惑。

第 1 点: “超文本传输​​协议堆栈 (HTTP.sys)”一节中提到的第二个要点如下。

内核模式请求队列。请求导致上下文切换的开销更少,因为内核将请求直接转发到正确的工作进程。如果没有工作进程可用于接受请求,则内核模式请求队列会保留该请求,直到有工作进程接收它。

根据这一点,我的结论如下: HTTP.sys绕过WWW服务将请求“直接”转发给工作进程。如果没有可用的工作进程,HTTP.sys 在内核模式请求队列中排队请求,同时 WAS 服务启动一个新的工作进程。然后,该工作进程自行从内核模式队列中获取请求。

第2点: “Windows进程激活服务(WAS)”部分下的进程管理小节如下。

WAS 为 HTTP 和非 HTTP 请求管理应用程序池和工作进程。当协议侦听器接收到客户端请求时,WAS 会确定工作进程是否正在运行。如果应用程序池已经有一个工作进程正在为请求提供服务,则侦听器适配器将请求传递给工作进程进行处理。如果应用程序池中没有工作进程,WAS 将启动一个工作进程,以便侦听器适配器可以将请求传递给它进行处理。

根据这一点,我的结论如下: HTTP.sys“通过WWW服务”将请求转发给工作进程,因为它是监听适配器。如果没有可用的工作进程,HTTP.sys 在内核模式请求队列中排队请求,同时 WAS 服务启动一个新的工作进程。然后,来自内核模式队列的请求被 WWW 服务接收并转发给工作进程。

谁能告诉我以上两个结论中哪一个是正确的?如果两者都不正确,请告诉我正确的流程。

0 投票
4 回答
7133 浏览

reporting-services - 为 Reporting Services 启用 CORS

我需要在 Reporting Services 中启用 CORS,以便我可以使用 ajax 从我的 Web 应用程序下载报告。到目前为止,我了解到的是,SSRS 不再使用 IIS,而是使用 http.sys 来服务 web.requests。有没有一种简单的方法可以将 CORS 支持添加到 SSRS(2012)?