0

我有以下代码绕过本地机器的代理服务器,然后发送 WebRequest。

                System.Net.HttpWebRequest Request;
                System.Net.WebResponse Response;
                System.Net.CredentialCache MyCredentialCache;

编辑 1

//System.Net.WebProxy proxyObject = new WebProxy("http://172.24.1.87:8080",true);

            string strRootURI = "http://172.24.18.240/webdav/";
            string strUserName = "UsName";
            string strPassword = "Pwd";
           // string strDomain = "Domain";
            string strQuery = "";
            byte[] bytes = null;
            System.IO.Stream RequestStream = null;
            System.IO.Stream ResponseStream = null;
            System.Xml.XmlTextReader XmlReader = null;

            try
            {
                // Build the SQL query.
                strQuery = "myWebDavVerb";

                // Create a new CredentialCache object and fill it with the network
                // credentials required to access the server.
                MyCredentialCache = new System.Net.CredentialCache();
                MyCredentialCache.Add(new System.Uri(strRootURI), "Basic", new System.Net.NetworkCredential(strUserName, strPassword));//, strDomain)


                // Create the HttpWebRequest object.
                Request = (System.Net.HttpWebRequest)HttpWebRequest.Create(strRootURI);


                // Add the network credentials to the request.
                Request.Credentials = MyCredentialCache;

                      // Request.Proxy = proxyObject;
                    // Specify the method.
                    Request.Method = "PROPFIND";
    }

现在,当我尝试执行时,出现 403 错误。所以我检查了服务器日志,发现 HTTP/1.0 请求来自一个 IP 172.24.1.87,而我的 IP 是172.24.17.220.

有没有办法避免这种情况?我认为这是 403 错误的根本原因。

请帮忙。谢谢,

苏亨

4

2 回答 2

2

该 IP 地址是您的代理的地址......并且您正在将 Web 请求的代理设置为该代理。

为什么您希望它不使用代理?

请注意,如果这是您的困惑点,您正在绕过对本地机器的请求,而不是来自本地机器请求

编辑:如果您真的想知道发生了什么,请使用Wireshark,它可以让您看到来自您机器的所有数据包。

如果要指定“不使用代理”,请执行以下操作:

request.Proxy = GlobalProxySelection.GetEmptyWebProxy();
于 2010-06-28T11:42:13.140 回答
1

HttpWebRequest 的代理属性有一个默认值,这始终是 WebRequest.GetSystemWebProxy() 的结果,它是您在 IE 中配置的代理

如果您不想使用代理,则需要覆盖默认代理

Request = (System.Net.HttpWebRequest)HttpWebRequest.Create(strRootURI); 
Request.Proxy = null;
于 2010-06-28T12:11:09.810 回答