You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于IIS+ARR反向代理实现ASP.NET Core 6与Rasa通信

ASP.NET Core 6(IIS HTTPS)与Rasa(HTTP)通信解决方案

核心问题原因

浏览器存在混合内容限制:HTTPS页面不允许发起HTTP请求,这是部署到IIS后通信失败的根本原因。本地VS调试正常是因为开发环境未严格执行该限制,或本地Web应用使用HTTP协议。

解决步骤:IIS ARR反向代理配置 + 代码调整

一、安装ARR与URL Rewrite组件

  1. 打开服务器管理器,选择「添加角色和功能」
  2. 定位到「Web服务器(IIS)」→「应用程序开发」,勾选以下组件:
    • Application Request Routing (ARR)
    • URL Rewrite
  3. 完成安装后重启IIS

二、启用ARR代理功能

  1. 打开IIS管理器,点击左侧服务器节点
  2. 找到并双击「Application Request Routing Cache」
  3. 在右侧操作栏点击「Server Proxy Settings」,勾选「Enable proxy」,点击「应用」保存

三、配置站点反向代理规则

针对你的ASP.NET Core站点,添加URL重写规则:

  1. 选中目标站点,双击「URL Rewrite」
  2. 右侧点击「添加规则」→「空白规则」,名称设为「Rasa Proxy」
  3. 匹配URL:
    • 请求路径:^rasa/(.*)
    • 使用:「正则表达式」
  4. 操作:
    • 操作类型:「Rewrite」
    • 重写URL:http://localhost:5005/{R:1}
    • 勾选「Append query string」
  5. 点击「应用」保存

四、代码调整(必须修改)

原来硬编码的http://localhost:5005请求地址需要改为反向代理的HTTPS路径,推荐通过配置文件管理:

  1. 在appsettings.json中添加Rasa配置:
"Rasa": {
  "BaseUrl": "/rasa/"
}
  1. 在Program.cs中注册HttpClient时注入BaseAddress:
builder.Services.AddHttpClient<IRasaService, RasaService>(client =>
{
    client.BaseAddress = new Uri(builder.Configuration["Rasa:BaseUrl"] ?? "/rasa/");
});
  1. 修改RasaService中的请求地址:
    将原来的硬编码地址改为相对路径:
var response = await _httpClient.PostAsync(
    "webhooks/rest/webhook", // 不再使用http://localhost:5005前缀
    content
);

验证与注意事项

  • 测试反向代理:用Postman向https://你的站点域名/rasa/webhooks/rest/webhook发送POST请求,应能正常获取Rasa响应
  • 确保Rasa服务正常运行并监听localhost:5005,IIS应用程序池权限需允许访问该端口
  • 若Rasa的Action Server(localhost:5055)也需要被外部HTTPS访问,可重复上述反向代理配置步骤,添加对应规则

内容的提问来源于stack exchange,提问作者T_MAC_1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 18:53:10