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 にはプロキシ プロパティのデフォルト値があります。これは常に、IE で構成したプロキシである WebRequest.GetSystemWebProxy() の結果です。

プロキシを使用したくない場合は、デフォルトのプロキシをオーバーライドする必要があります

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