- PR -

【C#.NET】 WebResponse取得でHTTPプロトコルエラー

1
投稿者投稿内容
さわこ
ベテラン
会議室デビュー日: 2003/06/04
投稿数: 71
投稿日時: 2006-04-20 18:07
C#でWebサーバ稼動チェックをしたいのですがHTTPプロトコルエラーになります。

■動作環境(Webサーバ)
OS:Windows Server 2003 Standard Edition
HTTPサーバ:Internet Information Service

■動作環境(クライアント)
OS:Windows 2000
開発言語:Visual Studio .NET 2003 C#


≪問題点と状況≫
HttpWebRequestを使用して、サーバー稼動チェックを行いたいのですが、
サーバーからの応答を受信するためのWebResponseを取得するところで、
HTTPプロトコルエラー(System.Net.WebExceptionStatus.ProtocolError)になります。

ちなみに、WebRequestの作成で
要求するURLを正常に表示できるYahoo!のURLに設定してもエラーになりました。

≪聞きたいこと≫
同じ環境の別端末では正常に処理されています。
プロトコルエラーになる原因になにがあるか教えていただけますでしょうか。
色々なサイトを見ましたが全く分かりませんでした。

≪作成したロジック≫
--------------------------------------------------------------------------------
private bool ServerCheck()
{
 //要求するURL
 string url = "http://www.yahoo.co.jp/";

 System.Net.HttpWebResponse webres = null;
 StringBuilder strbuf = new StringBuilder();

 try
 {
  //WebRequestの作成
  System.Net.HttpWebRequest webreq =
   (System.Net.HttpWebRequest) System.Net.WebRequest.Create(url);

  //タイムアウト時間設定
  webreq.Timeout = 20000;

  //サーバーからの応答を受信するためのWebResponseを取得
  webres = (System.Net.HttpWebResponse) webreq.GetResponse();

  //応答ステータスコードを判定
  if (webres.StatusCode == System.Net.HttpStatusCode.OK)
  {
   //サイトが正常稼動の場合はTrueを返す
   return true;
  }
  else
  {
   return false;
  }
 }
 catch (System.Net.WebException e)
 {
  if (e.Status == System.Net.WebExceptionStatus.ProtocolError)
  {
   //ログ出力
  }
  return false;
 }
 catch (Exception ex)
 {
  //ログ出力
  return false;
 }
}
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2006-04-20 18:14

WebException は、Status が WebExceptionStatus.ProtocolError の場合 Response で エラーのレスポンスを返してくれます。
これの StatusCode や StatusDescription でどういうエラーだったのか確認する必要があるでしょう。


[ メッセージ編集済み 編集者: Hongliang 編集日時 2006-04-20 18:14 ]
さわこ
ベテラン
会議室デビュー日: 2003/06/04
投稿数: 71
投稿日時: 2006-04-20 18:26
引用:

Hongliangさんの書き込み (2006-04-20 18:14) より:

WebException は、Status が WebExceptionStatus.ProtocolError の場合 Response で エラーのレスポンスを返してくれます。
これの StatusCode や StatusDescription でどういうエラーだったのか確認する必要があるでしょう。


[ メッセージ編集済み 編集者: Hongliang 編集日時 2006-04-20 18:14 ]



Hongliang即レスありがとうございます。

先ほど上記の件書き忘れてました。
エラー時のstatusとMessageです。

e.Status :ProtocolError System.Net.WebExceptionStatus
e.Message:リモート サーバーがエラーを返しました : (401) 許可されていません

ここで問題なのが、
エラーを返した場合・・・クライアント側でどうすればいいのかが分かりません。
再度教えていただけますでしょうか。。
さわこ
ベテラン
会議室デビュー日: 2003/06/04
投稿数: 71
投稿日時: 2006-04-21 10:16
解決しました!!

要求するURLにファイル権限がなくて、
Everyone でフルコントロールにすれば
正常に動くようになりました!!

ただのファイル権限だったのか・・・
でも、それがこんなに時間がかかるとは思いませんでした。
侮れない!ファイル権限!!!!
1

スキルアップ/キャリアアップ(JOB@IT)