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

VS运行正常的Telegram Bot发布到IIS出现HttpRequestException异常

根因分析

  • VS调试模式下程序会继承当前登录Windows用户的网络配置,你本地登录用户已经配置过企业代理,因此访问Telegram API的请求可以正常通过代理转发,不会报错。
  • 发布到IIS后,站点对应的应用程序池默认使用内置服务账户(如IIS AppPool\站点名、NetworkService等)运行,这类账户不会继承普通登录用户的代理配置,也没有单独配置企业代理,发起的Telegram API请求会直连外网,被企业网络策略拦截后触发连接超时,也就是你看到的Socket错误10060。

可用修复方案

方案1:代码中显式给Bot客户端配置代理

初始化TelegramBotClient时,传入绑定了企业代理配置的HttpClient即可,示例代码如下:

// 配置企业代理
var webProxy = new WebProxy("代理地址:代理端口", BypassOnLocal: false)
{
    // 若代理需要身份验证,补充下面的凭据配置
    Credentials = new NetworkCredential("代理认证用户名", "代理认证密码")
};
var httpClientHandler = new HttpClientHandler
{
    Proxy = webProxy,
    UseProxy = true
};
using var httpClient = new HttpClient(httpClientHandler);
// 用带代理配置的HttpClient初始化Bot客户端
var botClient = new TelegramBotClient("你的Bot Token", httpClient);

方案2:修改IIS应用程序池运行身份

将站点对应的应用程序池标识更换为你本地已经配置好代理的Windows用户:

  1. 打开IIS管理器,找到当前站点对应的应用程序池,右键选择「高级设置」
  2. 定位到「进程模型」分类下的「标识」项,点击右侧的省略号按钮
  3. 选择「自定义账户」,点击「设置」,输入代理配置正常的Windows用户名和密码,保存后重启应用程序池即可生效。

方案3:给系统服务账户配置全局代理

不需要修改代码和应用池配置,管理员身份运行命令提示符执行以下命令配置WinHTTP全局代理即可:

netsh winhttp set proxy 代理地址:代理端口 "<local>"

如果后续需要清除代理配置,执行:

netsh winhttp reset proxy

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:54:07