日本マイクロソフト松崎剛さん)Tweetもっと読むコメントを書く2014-04-19Web.configの先頭に改行があると500内部サーバーエラーが発生するASP.NETどういうこと?Web.configの先頭に改行があると、500内部サーバーエラーが発生します。XMLの仕様で、先頭の改行を許可していないからです。最初の行はXML宣言です。文字セット)を定義します。Stuidioで編集すれば、誤って先頭に改行を入れてしまってもすぐに気付けます。運用環境のためテキストエディタを使っていたので、気付くのに時間がかかってしまいました。オブジェクトではありません。オブジェクトではありません。」というエラーが発生しました。(チェックボックスがかなり多い画面です)原因がわかったので、トラブルシュートの経緯を書き残しておきます。MaxRequestLengthを超えてしまっているのでは?最初に疑ったのは、ViewStateが大きすぎてMaxRequestLengthを超えてしまっているのでは?ということでした。ビューステートが大きすぎて12031エラーが発生。...しかし、MaxRequestLengthの設定値を大きくしても、現象は変わりませんでした。Requestに含まれるフォームキーの上限を超えているのが原因だった次にエラーが出た状態で、画面遷移しようとしてみました。すると、以下のエラーが発生しました。Message:オブジェクトの現在の状態に問題があるため、操作は有効ではありません。System.Web.HttpRequest.FillInFormCollection()"ThrowIfMaxHttpCollectionKeysExceeded"という、わかりやすい名前のメソッドで例外がスローされていたので、このメソッド名で検索してみました。以下のフォーラムがヒットし、最終的にKBにたどり着きました。超えるこれらの要素を含む要求を拒否します。...KBを読んで、Web.configに以下の設定を追加し、MaxHttpCollectionの上限を変更すればいいことが、わかりました。/>詳細な説明MaxHttpCollectionの上限は、hashdosと呼ばれる攻撃に対応するために配布されたセキュリティ更新で導入されたものです。(1000という上限は攻撃に必要なパラメータ数を下回ります)ほとんどのWebサーバーに影響するメジャーなサービス拒否脆弱性ASP.NETのパッチは、12月29日に提供されている。Azureの顧客には自動的に適用される。このパッチは、単一のPOSTフォームフィールド数を、サービス拒否の攻撃に必要な数を下回る1,000に制限する。...hashdosについてhashdosについては、以下のサイトが詳しいです。徳丸浩の日記これによると、PHPをはじめとする多くのWebアプリケーション開発プラットフォームに対して、CPU資源を枯渇させるサービス妨害攻撃(DoS攻撃)が可能な手法が見つかったということです。...hasdos攻撃が成功した場合の影響について引用します。DoS攻撃の最中はCPU資源が攻撃に割り振られてしまい、サービスの提供が困難になると考えられます。Killerと異なり、メモリ資源が枯渇するわけではないので、攻撃がやめば直ちにサービスは回復するようです。オブジェクトではありません。ASP.NETイベントハンドラはprotectedにしないとマークアップのクラスからは参照できません。ButttonコントロールのClickイベントを例として説明します。いうこと?ビハインドコードにイベントハンドラ(Button_Click)を作成し、アクセス修飾子をprivateまたはinternalにします。マークアップのコードに以下のように記述します。現在のコンテキスト内に存在しません。"の例外が発生します。して?aspxのクラスはビハインドコードのクラスを継承しています。Hoge.aspxだとすると、継承関係は以下のようになります。System.Web.UI.Pageクラスどうすれば?アクセス修飾子をprotectedにします。publicでも参照できますが、スコープはできるだけ限定します。ビハインドコードのクラス内で完結するようにします。ASP.NETEvalの戻り値をビハインドコードのメソッドの引数にしたいことがあります。以下のようなメソッドをマークアップから呼び出す場合です。コードから表示文字列を取得します。name="value">コード。<returns>変換された文字列。}}この場合、マークアップを次のように書くと、実行時エラーになります。/>次のように明示的にキャストする必要があります。/>DataBinder.Evalメソッドの戻り値がObject型だからですね。バインド式を評価します。はてなブログProプログラマーです。プログラミング、時々ライフハック。(1)月別アーカイブスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。