.NET TIPS Webサーバのプロトコル違反による例外を回避するには?デジタルアドバンテージ 遠藤 孝信2010/04/01 |
|
|
WebClientクラス(System.Net名前空間)やHttpWebRequestクラス/HttpWebResponseクラス(System.Net名前空間)を使ってWebページにアクセスする際、Webサーバによっては、ページが存在しブラウザで開くことができるにもかかわらず、「サーバーによってプロトコル違反が発生しました. Section=ResponseHeader Detail=CR の後には LF を指定しなければなりません。」というメッセージの例外が発生して、アクセスできない場合がある*。
* 本稿執筆時点では、例えば、「ニセコ町のホームページ」など。 |
これは、冒頭で挙げたクラスがWebサーバから返されるデータを厳密に検証した結果、HTTPプロトコルに違反している個所が見つかった場合に発生する例外である(実際に行われる検証内容については、「HttpWebRequestElement.UseUnsafeHeaderParsingプロパティの解説部分」に記述されている)。
このような検証エラーを無視して(検証エラーによる例外を発生させずに)、Webサーバにアクセスするには、以下のような設定をアプリケーション構成ファイルに記述すればよい。これは、「安全でないヘッダ情報も解析して使用する」という設定だ。
| |
プロトコル違反の検証エラーを無視するアプリケーション構成ファイルの設定 |
具体的には、例えばアプリケーションの実行ファイルが「WinFormsApp.exe」であれば、「WinFormsApp.exe.config」というファイルを作成して、上記の内容を記述すればよい。
Visual Studioで開発している場合には、プロジェクトに「アプリケーション構成ファイル(App.Config)」を追加し、そこに上記の内容を記述する。これにより、アプリケーションのビルド時に、適切なファイル名の.exe.configファイルが自動作成される。
利用可能バージョン:.NET Framework 2.0以降 カテゴリ:クラス・ライブラリ 処理対象:ネットワーク 使用ライブラリ:WebClient属性(System.Net名前空間) 使用ライブラリ:HttpWebRequest属性(System.Net名前空間) 使用ライブラリ:HttpWebResponse属性(System.Net名前空間) |
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|