问题标签 [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 回答
939 浏览

c# - C# DLL 从 C++ 应用程序调用 SOAP Web 服务

根据网上的大量文章,我创建了一个简单的 C# DLL 类库,其中只有一个名为 Add 的方法。它接受 2 个整数并返回一个整数,如下所示。我还去了项目属性>构建>并选择了“注册COM互操作”选项:

我成功构建了它(作为管理员),它生成了CSDLL.dll文件CSDLL.tlb

接下来我创建了一个简单的 C++ 控制台应用程序,如下所示:

如果我运行它,我会在控制台窗口上打印出预期的结果。所以,这一切都很好。

接下来我修改了我的Add方法,以便它调用一个 SOAP 端点,而不是添加 2 个整数。我将代码包装在 try...catch 中,如果 SOAP 按预期执行,则返回 1,如果未返回预期结果,则返回 0,然后从 catch 块中返回 2,这意味着存在如下异常:

如果我从 C++ 控制台应用程序调用这个修改后的 DLL,它总是返回 2 = 表示我的上面的代码抛出了一些异常。我在 .NET Framework 4.8 上。

但是,如果我从通过添加对上面的 C# DLL 的引用创建的 C# 控制台应用程序调用它,则调用Add返回 1 = 表示它成功执行,结果我希望从中获得。

因此,相同的 C# DLL 返回 2 个不同的结果,具体取决于它是从 C++ 还是 C# 控制台应用程序调用的。

在设置了一些断点并调试了我的 DLL 之后,我发现对DoSomething响应的调用抛出异常并显示以下消息:

异常消息:消息 =“向https://server-address:port/path发出 HTTP 请求时发生错误。这可能是由于在 HTTPS 情况下未使用 HTTP.SYS 正确配置服务器证书. 这也可能是由于客户端和服务器之间的安全绑定不匹配造成的。内部异常消息:Message = "身份验证失败,因为远程方已关闭传输流。"

如果从 C++ 控制台应用程序调用 DLL 而不是从 C# 控制台应用程序调用相同的 DLL,为什么会出现此问题?我猜它必须与安全性有关,因为如果调用简单的数学Add方法,两者都会执行得很好,但是如果调用执行 SOAP 请求的方法,C# 控制台应用程序将执行得很好,而 C++ 控制台应用程序会导致 DLL 抛出异常?

0 投票
1 回答
1149 浏览

apache2 - Apache2:如何记录被拒绝的连接和客户端超时

我正在对使用 Apache2 运行的服务进行一些负载测试,我的负载测试工具的默认超时为 30 秒。当我以每秒 1 个请求的负载运行该工具一分钟时,它报告 40 个成功并获得 200 个 OK 响应,并且 20 个请求被取消,因为在等待标头时超出了客户端超时。

现在,我试图在服务器端发现这一点。我看不到 apache 访问日志或 gunicorn 访问日志中记录的超时。请注意,我对未接受的连接以及已接受和超时的连接感兴趣。

我有一些在 Windows 上处理类似服务的经验。http.sys 错误日志将显示连接断开错误,我们会知道我们的服务器是否正在断开连接。

0 投票
0 回答
49 浏览

.net - 在.net core中,http.sys可以作为反向代理服务器吗?

在 .net core 中 http.sys 可以用作 Kestrel 或其他内部服务器的反向代理服务器吗?

0 投票
0 回答
143 浏览

asp.net-core - ASP.net Core HTTP.sys 不适用于 https

我有以下 ASP.net Core 2.1 SOAP 服务 (SoapCore)

我从 SoapUI 调用它,它有效。

我尝试将其切换到 HTTPS:

它不起作用。我究竟做错了什么?还尝试将服务名称从 UrlPrefix 移动到 Soap 端点,结果相同。Wireshark 显示连接已终止,但未将任何字节发送回客户端。

它在不使用 HTTP.sys 时工作。这有效:

我需要 HTTP.sys,因为我在同一个端口上有多个服务。我以管理员身份运行服务(用于测试)

0 投票
0 回答
226 浏览

c# - 故意排队 Http.sys 队列

我试图通过将工作线程的最大数量限制为 1 并将多个请求发送到永远运行的 API 来故意使 http.sys 队列排队。

我已经阅读了多篇文章,其中我了解到 http.sys 将请求传递给 IIS 工作进程,该进程将请求传递给廉价的 CLR 线程。

我的理解是,我们能够通过修改 machine.config 来限制最大数量或工作线程和 IOCP 工作线程。我已将值设置为 1 并向具有 infit 循环的 api 发送 30 个请求,但我并没有真正注意到 HTTP 服务请求队列/当前队列大小性能计数器有所增加,有时 ASP.Net v4.0.30319/Requests Queued增加,但这不是我所期望的,http.sys 队列仅在我发送数百个请求时才排队。下面是我用来将 max worker 和 IO 线程设置为 1 的配置

请注意,我正在执行本地请求,我的 IIS 版本为 10.0.14393.0 并使用 Windows Server 2016,因此不确定这是否与此相关。

我的机器截图 在此处输入图像描述

参考资料: https ://docs.microsoft.com/en-us/troubleshoot/aspnet/performance-call-web-service#cause https://www.codeproject.com/Articles/38501/Multi-Threading-in-ASP -NET-2#:~:text=在 %20the%20ASP.NET%20Worker 和 %20databases%2C%20 等内部。)。 https://blog.leansentry.com/all-about-iis-asp-net-request-queues/

谢谢并恭祝安康。

0 投票
1 回答
321 浏览

angular - 使用 ASP.NET 核心托管 Angular 项目

我有一个我想托管的 Angular 项目。Angular 的 asp.net 核心 Web 项目中有一个模板。我研究了模板并为 ASP.NET 核心创建了一个空模板项目并安装了所需的包(如 SPA 和所有其他包)现在我想通过 .net 托管 Angular 项目(不在.net 项目的目录中)项目。

这里的问题是我没有这个 Angular 项目的源代码。我们只从 Nexus 获取二进制包。我观察到在 startup.cs 文件中我们可以提供项目的源路径。像这样的东西

从这个文件夹中,它打开 package.json 文件并找到启动命令并执行 mg 服务。它还询问它的根路径。

我不知道这部分。我的理解是,dist 文件夹必须先通过配置创建,然后才能在这里使用。如果源路径 id 与 ClientApp 不同,我也不知道如何正确配置它。我们可以使用任何这样的设置并使其工作吗?最终目标是使用来自 asp.net 核心项目的 HTTP.SYS 来托管 Angular 项目。这可能吗?做这个的最好方式是什么?

0 投票
1 回答
132 浏览

asp.net-core - 无法将 ASP.NET 核心应用程序作为 Windows 服务运行

我有一个 3.1 版本的 ASP.NET CORE 项目。我正在使用 HTTP.SYS 来托管这个项目。wwwroot 文件夹中有一些静态文件正在此程序中提供。这是我的startup.cs的外观。

我的program.cs看起来像这样:

现在有了这段代码,我可以创建一个 Windows 服务并运行它,但是当我点击 url 时,我只会看到 Hello World 消息。服务运行时不显示静态页面。我假设我在这里做错了什么。这样做的正确方法是什么?

0 投票
2 回答
661 浏览

asp.net - 我们可以在 Windows 中将 http 标头大小增加到 64kb 以上吗

我有一种情况,特定用户的HTTP 授权请求标头大小超过64kb (大约 90kb)。size大的原因是header中包含了bearer token,发起http请求的用户有很多claim。

问题是对于这个特定的用户,Web 服务器总是返回一个错误,说明:

Web 应用程序使用Microsoft owin自托管在控制台应用程序中,因此不涉及 iis。

在调查这个问题时,我遇到了以下文件。它表示 MaxFieldLength 的最大值为 64kb,表示 http.sys 处理的最大标头长度,我的服务器设置为最大值,即 65,536。

出于好奇,我尝试将值进一步增加到 131,072,但正如预期的那样,它并没有解决问题。

那么还有其他方法可以增加标头最大长度吗?

0 投票
1 回答
80 浏览

c# - HTTPListenerRequest.GetClientCertificate 在获得证书之前有哪些验证?

我正在尝试为我的HTTPListener. 我使用 netsh 命令设置用于 SSL 的证书,以便客户端可以验证服务器。一切正常,我只有一个问题。当我做 -

这是否验证了客户确实是它所说的那个人?在收到证书之前,这是否会根据公钥验证客户端证书的私钥?

0 投票
0 回答
88 浏览

asp.net-core - 需要服务结构中 http.sys 服务器的客户端证书

我在使用 HttpSysCommunicationListener 设置的服务结构中运行了 asp.net 核心 web api。我想让客户使用他们的客户证书对 API 进行身份验证

我在 asp.net 核心文档中发现了这一点,它允许 Kestrel 服务器要求客户端证书

我可以为 http.sys 设置类似的东西吗?或者我还能如何实现这个?