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

如何为IIS的ApplicationPoolIdentity账号配置默认代理规则?

IIS 10 下ApplicationPoolIdentity身份应用绕过代理访问本地资源解决方案

核心原因

ApplicationPoolIdentity是IIS生成的专属虚拟账户,默认不会加载用户配置文件,普通用户维度的IE代理设置、注册表修改、系统环境变量都不会作用到该身份下的进程,所以会出现普通用户正常但应用池进程始终走代理的情况。

可行解决方案

方案1:应用代码层面配置全局代理(最推荐)

该方案不需要修改服务器配置,仅对当前应用生效,可控性最高。
在.NET Core 3.1应用的Program.cs的CreateHostBuilder方法中添加全局代理配置:

using System.Net;

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureServices(services =>
        {
            // 配置全局默认代理规则,所有HttpClient默认使用该配置
            HttpClient.DefaultProxy = new WebProxy
            {
                // 如不需要对外走代理,直接删除Address配置,将UseProxy设为false即可
                Address = new Uri("http://你司实际代理地址:端口"),
                BypassProxyOnLocal = true, // 自动绕过localhost、127.0.0.1等本地地址
                // 自定义需要绕过代理的内部域名、IP段
                BypassList = new string[] { "*.你司内部域名.com", "10.0.*", "192.168.*" },
                UseDefaultCredentials = true
            };
        })
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });

修改后重新编译发布应用即可生效。

方案2:修改ApplicationPoolIdentity账户的代理配置

如果不能修改应用代码,可直接修改虚拟账户的系统代理规则:

  • 打开IIS管理器,找到对应应用池,右键选择「高级设置」
  • 在「进程模型」分类下找到「加载用户配置文件」,将值改为True,保存后重启应用池
  • 以管理员身份打开命令提示符,执行命令获取应用池对应的SID:
    wmic useraccount where name='IIS APPPOOL\替换为你的应用池名称' get sid
    
  • 打开注册表编辑器,定位到路径HKEY_USERS\上一步获取到的SID\Software\Microsoft\Windows\CurrentVersion\Internet Settings
  • 修改对应键值:
    • 要完全关闭代理:将ProxyEnable的DWORD值改为0
    • 仅绕过本地资源:保留ProxyEnable为1,新增字符串值ProxyOverride,内容填<local>;*.你司内部域名.com;192.168.*
  • 重启应用池后生效

方案3:修改.NET全局配置文件(服务器所有应用生效)

如果该服务器上所有IIS应用都需要相同的代理规则,可修改machine.config配置:

  • 打开对应架构的配置文件:
    • 64位应用池:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config
    • 32位应用池:C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config
  • 在<configuration>节点下添加以下配置:
    <system.net>
      <defaultProxy enabled="true">
        <proxy bypassonlocal="True" proxyaddress="http://你司实际代理地址:端口"/>
        <bypasslist>
          <add address="[a-z]+\.你司内部域名\.com$" />
          <add address="192\.168\.\d{1,3}\.\d{1,3}" />
        </bypasslist>
      </defaultProxy>
    </system.net>
    
  • 保存后重启IIS服务生效

注意事项

  • 若应用完全不需要走任何代理,所有方案中都可以直接关闭代理开关,不需要填写实际代理地址
  • 修改注册表或系统配置前建议提前备份对应配置项,避免影响其他服务运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:15:05