ASP.NET Core 中的 HTTP.sys Web 服务器实现
MaxRequestBodySize
允
指定要向 HTTP.sys 注册的 UrlPrefixCollection。 最有用的是 UrlPrefixCollection.Add,它用于将前缀添加到集合中。 可能在处理侦听器之前随时对这些设置进行修改。 MaxRequestBodySize 允许的请求正文的最大大小(以字节计)。 当设置为 null 时,最大请求正文大小不受限制。 此限制不会影响升级后的连接,这始终不受限制。 在 ASP.NET Core MVC 应用中为单个 IActionResult 替代限制的推荐方法是在操作方法上使用 RequestSizeLimitAttribute 属性:
如果在应用开始读取请求后尝试配置请求限制,则会引发异常。 IsReadOnly 属性可用于指示 MaxRequestBodySize 属性是否处于只读状态。只读状态意味着已经太迟了,无法配置限制。 如果应用应替代每个请求的 ,请使用 IHttpMaxRequestBodySizeFeature:
如果使用的是 Visual Studio,请确保应用未经配置以运行 IIS 或 IIS Express。 在 Visual Studio 中,默认启动配置文件是针对 IIS Express 的。 若要作为控制台应用运行该项目,请手动更改所选配置文件,如以下屏幕截图中所示: 配置 Windows Server 确定要为应用打开的端口,并使用 Windows 防火墙或 New-NetFirewallRule PowerShell cmdlet 打开防火墙端口,以允许流量到达 HTTP.sys。 在以下命令和应用配置中,使用的是端口 443。 在部署到 Azure VM 时,在网络安全组中打开端口。 在以下命令和应用配置中,使用的是端口 443。 如果需要,获取并安装 X.509 证书。 在 Windows 上,可使用 New-SelfSignedCertificate PowerShell cmdlet 创建自签名证书。 有关不支持的示例,请参阅 UpdateIISExpressSSLForChrome.ps1。 在服务器的“本地计算机”>“个人”存储中,安装自签名证书或 CA 签名证书。 如果应用为,则安装 .NET Core、.NET Framework 或两者(如果应用是面向 .NET Framework 的 .NET Core 应用)。 如果应用是,应用在部署中包含运行时。 无需在服务器上安装任何框架。 在应用中配置 URL 和端口。 默认情况下,ASP.NET Core 绑定到 :5000。 若要配置 URL 前缀和端口,可采用以下方法: 下面的代码示例展示了如何对端口 443 结合使用 和服务器的本地 IP 地址 10.0.0.4:
UrlPrefixes 的一个优点是会为格式不正确的前缀立即生成一条错误消息。 UrlPrefixes 中的设置替代 UseUrls/urls/ASPNETCORE_URLS 设置。 因此,UseUrls、urls 和 ASPNETCORE_URLS 环境变量的一个优点是在 Kestrel 和 HTTP.sys 之间切换变得更加容易。 HTTP.sys 使用 HTTP 服务器 API UrlPrefix 字符串格式。 警告 不应使用顶级通配符绑定(*:80/ 和 +:80)。 顶级通配符绑定会带来应用安全漏洞。 此行为同时适用于强通配符和弱通配符。 请使用显式主机名或 IP 地址,而不是通配符。 如果可控制整个父域(相对于易受攻击的 *.com),子域通配符绑定(例如,*.mysub.com)不会构成安全风险。 有关详细信息,请参阅 。 在服务器上预注册 URL 前缀。 用于配置 HTTP.sys 的内置工具为 netsh.exe。 netsh.exe 用于保留 URL 前缀并分配 X.509 证书。 此工具需要管理员特权。 使用 netsh.exe 工具为应用注册 URL:
在以下示例中,服务器的本地 IP 地址是 10.0.0.4:
在 URL 注册后,工具响应返回 URL reservation successfully added。 若要删除已注册的 URL,请使用 delete urlacl 命令:
在服务器上注册 X.509 证书。 使用 netsh.exe 工具为应用注册证书:
为了便于参考,将 GUID 作为包标记存储在应用中: 如果使用的不是 Visual Studio: 如下示例中:
在证书注册后,工具响应返回 SSL Certificate successfully added。 若要删除证书注册,请使用 delete sslcert 命令:
netsh.exe 的参考文档: 运行应用。 结合使用 HTTP(而不是 HTTPS)和大于 1024 的端口号绑定到 localhost,无需管理员权限,即可运行应用。 对于其他配置(例如,使用本地 IP 地址或绑定到端口 443),必须有管理员权限才能运行应用。 应用在服务器的公共 IP 地址处响应。 此示例在 Internet 上的公共 IP 地址 104.214.79.47 处访问服务器。 此示例使用的是开发证书。 在绕过浏览器的不受信任证书警告后,页面安全加载。 代理服务器和负载均衡器方案 如果应用由 HTTP.sys 托管并且与来自 Internet 或公司网络的请求进行交互,当在代理服务器和负载均衡器后托管时asp服务器,可能需要其他配置。 有关详细信息,请参阅配置 ASP.NET Core 以使用代理服务器和负载均衡器。 用于支持 gRPC 的高级 HTTP/2 功能 HTTP.sys 中的其他 HTTP/2 功能支持 gRPC,包括对响应尾部和发送重置帧的支持。 (编辑:成都站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |