WebRequest是从另一个IP而不是我的系统IP生成的?

时间:2010-06-28 11:38:40

标签: c# .net defaultnetworkcredentials networkcredentials

我有以下代码绕过本地计算机的代理服务器,然后发送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错误的根本原因。

请帮忙。 谢谢,

Subhen

2 个答案:

答案 0 :(得分:2)

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

为什么你不期望它不使用代理?

请注意,如果这是您的混淆点,那么您将绕过请求本地计算机,而不是本地计算机。

编辑:如果您真的想知道发生了什么,请抓住Wireshark,这样您就可以看到来自您机器的所有数据包了。

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

request.Proxy = GlobalProxySelection.GetEmptyWebProxy();

答案 1 :(得分:1)

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

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

Request = (System.Net.HttpWebRequest)HttpWebRequest.Create(strRootURI); 
Request.Proxy = null;