2

当我在公司的防火墙后面并使用 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 地址。

4

1 回答 1

0

解决方案是为请求设置代理。就我而言,我打开了配置脚本并通过“If”语句跟踪以找到 Internet Explorer 正在使用的代理,然后我将 url 和端口复制/粘贴到下面显示的字段中。

    var request = (HttpWebRequest)WebRequest.Create(loginUrl);
    WebProxy myproxy = new WebProxy(@"YOUR_PROXY_URL", YOUR_PROXY_PORT) { BypassProxyOnLocal = false };
    request.Proxy = myproxy;
    request.ProtocolVersion = HttpVersion.Version10;
于 2015-09-10T18:45:35.140 回答