2011-10-24 4 views
0

をクラッシュ。にWebResponseは「時々、」私は<strong></strong>、条件が真であるとき、私は、サーバーに私のアイテムを投稿するにWebResponseを行う「IF」と<strong>foreachの</strong>を持って

は時々2つのO以上のアイテムが、次のエラーで、他の回のクラッシュのためのコードの実行:(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攻撃から守ります。 –

答えて

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); 
    } 
}