ASP.NET 開発サーバー + カスタム IPrincipal で SerializationException / Windows Vista + IIS7 でデバッグを有効にする

Custom IPrincipal stopped working in upgrade to ASP.Net 2.0

Vista x64 での開発をするにあたって、IIS7 との連携が面倒だったためとりあえず ASP.NET 開発サーバーを使おうと思ったのだが、Request オブジェクトを参照しようとすると SerializationException が発生する現象に遭遇した。

カスタムの IPrincipal クラスを作成し、HttpContext.Current.User に代入した状態で Request オブジェクトの特定のプロパティを参照しようとすると発生する。上記フォーラムによると ASP.NET 開発サーバー をやめて IIS を使えとのこと。

Using Visual Studio 2008 with IIS 7.0 に沿ってこれから作業をする。IIS7 でASP.NET を有効にするところまでは入れてあったんだけど Install IIS 6.0 Metabase Compatibility はやってなかった。

(追記) うまくいった。

  • Windows の機能の有効化または無効化 により IIS 7 をインストールする。デバッグに必須なのは以下のコンポーネント
    • Internet Information Services 自体
    • Internet Information Services – Web 管理ツール – IIS 6 と互換性のある管理 – IIS メタベースおよび IIS 6 構成との互換性
    • Internet Information Services – World Wide Web サービス – アプリケーション開発機能 – ASP.NET
  • Visual Studio 2008 を起動する際に 管理者 として起動する。VisualStudio2008 の起動用ショートカットで「管理者としてこのプログラムを実行する」にしておくとよい

Visual Studio 2005 + IIS6 の時と異なり、IISにおいて Windows 認証を有効にする必要はない。ブラウザからアクセスする際にも認証が不要になっている。すなわちInternet Explorer 以外のブラウザからアクセスする際にも認証が不要であるのでデバッグ作業が楽である。

今まではネットワーク越しの場合、SSL無効状態でBasic認証のパスワードを送信しなければいけなかった。そのため暗号化したかったらIPSec設定が必要だった。

(さらに追記) Windows XP x64 のIIS6では1つしかWebサイトが作成できないという制限があったが、Vista x64 の IIS7 では2つめのWebサイトを作成できる。数に限度があるかどうかは未確認。

XPx64/Server2003 の場合、たとえ十分なメモリを搭載していても、アプリケーションを最小化するとワークメモリをスワップアウトするというメモリ管理上の問題があって体感速度として嬉しくない状態だったのが、Vista だとそれが改善されるのもよい。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。