C# 向WebClient发出的所有请求添加querystring参数

C# 向WebClient发出的所有请求添加querystring参数,c#,C#,我已经扩展了WebClient类并重写了GetWebRequest方法。有没有办法在这个方法中向我的所有请求添加querystring参数 protected override WebRequest GetWebRequest(Uri address) { WebRequest request = base.GetWebRequest(address); HttpWebRequest webRequest = request as HttpWebRequest; if

我已经扩展了
WebClient
类并重写了
GetWebRequest
方法。有没有办法在这个方法中向我的所有请求添加querystring参数

protected override WebRequest GetWebRequest(Uri address)
{
    WebRequest request = base.GetWebRequest(address);

    HttpWebRequest webRequest = request as HttpWebRequest;

    if (webRequest != null)
    {

    }
}

我尝试过修改
地址
,但似乎没有效果。而且
webRequest.Address
没有setter。

我尝试了您的示例,通过将新的
Uri
传递给
base.GetWebRequest()
,可以在
GetWebRequest
方法中修改地址:


然后如果我调用
newcustomwebclient().DownloadData(“http://stackoverflow.com“”
实际url(如fiddler所见)是

为什么不在实际创建
HttpWebRequest
时添加查询字符串?@Mayank,因为我不想在每次创建新请求时都添加查询字符串。您可以修改对基构造函数的调用中的地址吗?@PhilipPittle每个新请求的地址都不同。它不是静态的
public class CustomWebClient : WebClient
{
    protected override WebRequest GetWebRequest(Uri address)
    {
        var newUrl = address.OriginalString;

        if (newUrl.Contains("?"))
            newUrl += "&";
        else
            newUrl += "?";

        newUrl += "MyCustomParam=value";


        return base.GetWebRequest(new Uri(newUrl));
    }
}