问题标签 [arr-3.0]

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 回答
3020 浏览

iis - 如何在 Windows 10 Preview 中安装应用程序请求路由 ARR 3.0?

当我尝试安装应用程序请求路由时,我收到一个错误“安装 Microsoft 应用程序请求路由 3.0 需要 IIS 7.0 或更高版本”。Windows 10 有 IIS 10.0,所以应该可以,但我猜微软还没有修复版本检查。有没有可用的解决方法?

Windows 版本:Windows 10 Pro Insider Preview。构建 10074。

ARR3 安装在 Windows 10 预览版中

0 投票
1 回答
131 浏览

asp.net-core - signalR Core + ARR3 反向代理:握手超时

我在 docker 环境中使用 .net core 3.1,指向安装了 ARR 的 IIS 反向代理。

更新

我设法让重写运行。BNut,因为我不知道它为什么会这样工作,所以我无法回答这个问题。我将重写规则从 localhost: 更改为 127.0.0.1: 现在握手有效。但它似乎不适用于仅与 ServerSentEvents 一起使用的 websocket 协议。

但是已经安装了 Websockets。我正在使用 ARR3。所以对我来说最后两个问题是:为什么它使用 IP 而不是 localhost?(下面的完整配置)为什么即使安装了 WS 也会抛出这个错误?

完全重写配置:

编辑

感谢Bruce Zhang,我找到了问题的根源,但仍然不知道如何解决它。

我在 Windows 服务器上通过 docker compose 运行了一个 docker 环境。在那里,我将 IIS10 与 UrlRewrite 和 ARR3 以及 .net core 3.1 应用程序和 signalR 核心一起使用。作为客户端,我使用@microsoft/signalr 的打字稿版本(最新)由于某些原因,我不知道连接是否正常,但握手调用以超时结束。我在网上查看了一些解决方案并应用了这个:

  1. 为 wss:// 和 ws:// 添加了 URL 重写入站规则
  2. 增加了 signalR 的超时时间
  3. 在 ARR 中配置响应缓冲区(见下图)
  4. 启用失败的请求跟踪

docker env 与启用了 ARR 和 Websockets 功能的 IIS 在同一台服务器上运行。

Web-App 容器公开端口 6652,将其映射到 docker 容器中的端口 443。

我的重写规则定义如下:

SignalR 配置为:

ARR 配置: 在此处输入图像描述

signalR 客户端的跟踪日志显示它的握手调用以超时结束:

有什么方法可以调试为什么请求以超时结束?奇怪的是,我在服务器上也有一个 jira 实例。也通过具有相同设置的反向代理绑定,并且那里的 WSS/WS 调用不会失败。