WebResponse动态“有时”崩溃

时间:2011-10-24 16:25:49

标签: c# .net .net-4.0

我的 foreach 带有"如果" ,当条件为真时,我会使用WebResponse将我的项目发布到服务器中。

有时代码会运行两个以上的项目,但其他时间会因以下错误而崩溃:

远程服务器返回错误:(407)需要代理验证。

代码:

WebClient client = new WebClient();

                string authInfo = "admin:geoserver";
                string address = "http://xxxxxxxx:8080/geoserver/rest/workspaces/";
                client.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(authInfo));



                WebRequest request = WebRequest.Create(address);

                request.ContentType = "text/xml";
                request.Method = "POST";

                request.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(authInfo));

                byte[] bret = Encoding.GetEncoding("UTF-8").GetBytes("<workspace><name>" + nameWS + "</name></workspace>");



                Stream reqstr = request.GetRequestStream();
                reqstr.Write(bret, 0, bret.Length);
                reqstr.Close();


                try
                {
                    WebResponse response = request.GetResponse();

                    response.Close();

                }

我的环境是C#Visual Studio 2010

1 个答案:

答案 0 :(得分:0)

你多久打电话给这个?正如其他人所说,可能是服务器受到DOS保护,你的请求就像那样。例如,使用使用块立即处理所有一次性物体也是有价值的。我们遇到了一些问题,同时在我们的网络内部向我们的Web服务器开放了太多连接。您可以将代码调整为如下所示:

using(var client = new WebClient())
{
    string authInfo = "admin:geoserver";
    string address = "http://xxxxxxxx:8080/geoserver/rest/workspaces/";
    client.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(authInfo));

    var request = WebRequest.Create(address);

    request.ContentType = "text/xml";
    request.Method = "POST";

    request.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(authInfo));

    byte[] bret = Encoding.GetEncoding("UTF-8").GetBytes("<workspace><name>" + nameWS + "</name></workspace>");

    using (var reqstr = request.GetRequestStream())
    {
        reqstr.Write(bret, 0, bret.Length);
    }

    try
    {
        using (var response = request.GetResponse())
        {
            // your code here...
        }

    }
    catch (Exception exc)
    {
        System.Diagnostics.Debug.WriteLine(exc.Message);
    }
}