C#.Net 2.0 ResponseUri.Query为空

C#.Net 2.0 ResponseUri.Query为空,c#,.net,C#,.net,当我执行httprequest时,远程服务器会用重定向和一些额外的查询参数进行响应,我遇到了一个问题。问题在于,在某些环境中,附加参数是空的 当我在测试环境中运行代码时,参数不是空的 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); WebProxy myProxy = new WebProxy(); Uri newUri = new Uri(ConfigurationManager.AppSettings["p

当我执行httprequest时,远程服务器会用重定向和一些额外的查询参数进行响应,我遇到了一个问题。问题在于,在某些环境中,附加参数是空的

当我在测试环境中运行代码时,参数不是空的

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
 WebProxy myProxy = new WebProxy();
 Uri newUri = new Uri(ConfigurationManager.AppSettings["proxyUrl"]);
 myProxy.Address = newUri;
 request.Proxy = myProxy;
 request.Timeout = Int32.Parse(ConfigurationManager.AppSettings["PBVtimeout"]);
 request.AllowAutoRedirect = true;
 request.MaximumAutomaticRedirections = 2;

 ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(myCertificateValidation);

 HttpWebResponse response = (HttpWebResponse)request.GetResponse();

 log.Debug("PathAndQuery: " + response.ResponseUri.PathAndQuery);
 log.Debug("Statuscode: " + response.StatusCode);
 log.Debug("Statusdescription: " + response.StatusDescription);

 Uri uri = response.ResponseUri;
 NameValueCollection qscol = ParseQueryString(uri.Query);

 return qscol["Status"] + qscol["Status_code"];
我记录状态代码、状态描述以及响应的路径和查询。StatusCode和StatusDescription在这两种环境中都是“OK”,但PathAndQuery如下所示:

Faulty environment: localhost/Service

Correct environment: localhost/Service?Merchant_id=1345&Version=2&Customer_refno=269932&Status=E&Status_code=48
如您所见,故障环境缺少参数

我最初的想法是,防火墙“清理”重定向响应是一个问题。但是,当我在Ordinary web浏览器中执行http请求时,它工作得很好

代码在C#.Net 2.0中,在Windows 2003服务器上运行


你知道问题出在哪里吗?

response.Headers[“Location”]是怎么说的?没关系,它只是在第一次响应中设置的,而不是在重定向之后。但是您可以将AllowAutoRedirect设置为false来检查它。我尝试将AllowAutoRedirect设置为false,并记录响应。Headers[“Location”]。它有正确的参数,所以我将使用它。我不需要它来做真正的重定向。非常感谢你!