我们在使用 ISA 的公司网络上,我在尝试不让请求通过 ISA 时遇到了问题。
- 我的本地 Windows 7 机器上有 IIS7,其中有网站和服务层。
- 网站使用我的 HOSTS 文件中设置为指向 127.0.0.1 的 xxxx.servicelayer.local 地址访问服务层。
- 我有 Windows 防火墙客户端,但已将其禁用。
- 我尝试将该地址添加到 IE 中,以使其不通过 ISA,并且完全禁用此部分。
- 当网站(实际上是 IIS 向其自身发出请求)尝试访问服务层时,我收到 ISA 错误,提示代理身份验证失败。
考虑到我看到的配置都设置为不通过代理 ISA,我看不出这实际上是如何通过代理并给出此错误的。Windows 7 中是否有强制代理设置的程序、某种缓存或类似程序?
答案1
如果这是 .Net - 并且您尚未指定平台是什么 - 那么您可以尝试在 Web 应用程序(而不是服务)的 web.config 中添加此配置 XML 块。它需要直接进入根部分:
<system.net>
<defaultProxy enabled="false">
</defaultProxy>
</system.net>
同样 - 您可能会发现配置中已经有 system.net 的条目,它将请求定向到特定的代理,在这种情况下,请用这个替换它。
编辑-回应你的评论
出于兴趣 - 服务层是否尝试调用外部世界?我只是想知道您是否真的在服务方法上遇到了错误,该错误通过服务冒泡回到网站代码 - 如果这是 SOAP/wsHttp 服务,那么 .Net 很可能会将代理身份验证错误从服务层保留回调用代码。
最后要说的是- 我会使用 Fiddler 调试机器上的网络流量 - 这样您就可以准确地看到请求的去向、哪些进程正在请求它们以及它们失败的原因。这不会捕获所有到达 127.0.0.1 的流量,因为 HTTP 子系统通常会绕过任何系统代理进行环回。但是 - 某些东西正在尝试访问需要代理的地址,并且运行 Fiddler 后您应该可以看到它是什么 - 以及地址是什么。
最后说明 好的 - 所以请求是发给 ISA - 不是互联网信息服务这样做,是代码,或者至少是代码使用的配置值,在这样做。如果您无法跟踪这些值并禁用防火墙的使用,那么您可以做的一件事就是将应用程序池的身份切换到使用网络服务 - 只要允许计算机退出 ISA,它就会成功通过代理进行身份验证,从而解决所有问题。
不过,了解以下信息会很有帮助:如何正在进行此 webservice 调用(.Net、Java 等),因为它们会根据此调用以多种不同的方式受到影响。
答案2
您是否已验证服务器上的 IE 可以使用 URL 加载网站?您使用的是什么应用程序(.net?)?您是否在该应用程序中指定了代理设置?您是否已检查网站绑定以确保该网站也在侦听 127.0.0.1?
IIS 不会看到您在 IE 中调整的设置,因为这些设置是针对您的用户的,而不是服务器/服务的。