当我在公司的防火墙后面并使用 C# 与我收到的网站交互时
System.Net.WebException : The remote server returned an error: (403) Forbidden.
但是,我可以在同一台计算机上打开 Internet Explorer,并且访问同一网站没有问题。此外,我可以切换到我公司的“非防火墙”访客网络,我再次使用我的 C# 应用程序访问同一网站没有问题。
我在其他 stackoverflow 帖子中读到,要启用通过代理进行访问,我需要在项目的 app.config 中包含以下内容:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.net>
<defaultProxy useDefaultCredentials="true" />
</system.net>
</configuration>
...但它对我不起作用。我收到相同的错误消息。
这是我试图执行的代码:
var request = (HttpWebRequest) WebRequest.Create(loginUrl);
request.ProtocolVersion = HttpVersion.Version10;
request.Proxy = WebRequest.DefaultWebProxy;
request.UseDefaultCredentials = true;
...还有更多代码来处理对 POST 的响应;但我没有包括它,因为它似乎与解决代理问题无关。
我几乎是这个话题的新手。直觉上,我似乎应该能够搭载 Internet Explorer 代理设置,以便我的 C# 应用程序也使用它们。
更让我感到困惑的是,我注意到 Internet Explorer 没有使用单个代理服务器,而是执行自动配置脚本。该脚本有许多“if”语句检查以查看要使用的代理 ip,具体取决于所需的 ip 地址。