「.NET」カテゴリーアーカイブ

SQLServer モードのセッション状態のサポート

C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exeでSQL Serverにセッション状態サポートの追加削除ができる。
たとえば、以下のように実行。
追加

C:\Windows\Microsoft.NET\Framework\v2.0.50727>aspnet_regsql.exe -S localhost -E -ssadd -sstype p

削除

C:\Windows\Microsoft.NET\Framework\v2.0.50727>aspnet_regsql.exe -S localhost -E -ssremove

その他詳細はヘルプを見る。

C:\Windows\Microsoft.NET\Framework\v2.0.50727>aspnet_regsql.exe /?
SQL Server に ASP.NET 機能をインストールおよびアンインストールするための管理ユー
ティリティです。
Copyright (C) Microsoft Corporation. All rights reserved.
                                -- 一般的なオプション --
-?                このヘルプ テキストを表示します。
-W                ウィザード モードです。(別のパラメータが指定されていない
                  場合の既定値です。)
                               -- SQL 接続オプション --
-S <サーバー>         操作する SQL Server インスタンス (SQL Server 7.0 以上)
                  です。
-U <ログイン ID>      認証する SQL Server のユーザー名です。-P オプションが
                  必要です。
-P <パスワード>        認証するための SQL Server パスワードです。-U オプション
                  が必要です。
-E                現在の Windows 資格情報で認証します。
-C <接続文字列>        接続文字列です。ユーザー名、パスワード、およびサーバー名
                  を指定する代わりに、SQL Server
                  接続文字列を指定
                  します。文字列は、指定されていない限り、データベース
                  名を含むことはできません。
-sqlexportonly <ファイル名>
                  指定された機能を追加または削除するための SQL スクリプト
                  ファイルを生成しますが、実際の操作は行いません。次のオプ
                  ションと共に使用することができます:
                  -A、-R、-ssadd および -ssremove
                           -- アプリケーション サービス オプション --
-A all|m|r|p|c|w  機能のためのサポートを追加します。複数の値を同時に指定する
                  ことができます。例:
                      -A mp
                      -A m -A p
                  all: すべての機能です。
                  m: メンバシップ
                  r: ロール マネージャ
                  p: プロファイル
                  c: パーソナル化
                  w: SQL Web イベント プロバイダ
-R all|m|r|p|c|w  機能のためのサポートを削除します。複数の値を同時に指定する
                  ことができます。例:
                      -R mp
                      -R m -R p
                  all : すべての機能、およびそれらの機能によって共有される
                  すべての共通テーブルとストアド
                  プロシージャです。
                  m: メンバシップ
                  r: ロール マネージャ
                  p: プロファイル
                  c: パーソナル化
                  w: SQL Web イベント プロバイダ
-d <データベース>       アプリケーション サービスと共に使用するデータベース名
                  です。データベース名が指定されない場合、既定のデータベース
                  "aspnetdb" が使用されます。
-Q                非表示出力モードです。機能を削除するための確認メッセージを
                  表示しません。
                  -- SQL キャッシュ依存のオプション (SQL 7.0 および 2000 用) --
-d <データベース>       SQL 7.0 および SQL 2000 の SQL キャッシュ依存と共に
                  使用するデータベース名です。オプションとして、-C オプション
                  (省略不可能)
                  と共に接続文字列を使用して、
                  データベースを指定することができます。
-ed               SQL キャッシュ依存のため、データベースを有効にします。
-dd               SQL キャッシュ依存のため、データベースを無効にします。
-et               SQL キャッシュ依存のため、テーブルを有効にします。
                  -t オプションが必要です。
-dt               SQL キャッシュ依存のため、テーブルを無効にします。
                  -t オプションが必要です。
-t <テーブル>         SQL キャッシュ依存のために有効化または無効化するテーブル
                  の名前です。-et または -dt
                  オプションが必要です。
-lt               SQL キャッシュ依存のために有効にされたすべてのテーブルを
                  一覧表示します。
                              -- セッション状態のオプション --
-ssadd            SQLServer モードのセッション状態のサポートを追加します。
-ssremove         SQLServer モードのセッション状態のサポートを削除します。
-sstype t|p|c     セッション状態サポートの種類:
                  t: 一時的です。セッション状態データは "tempdb" データベースに
                  格納されます。セッションを管理するためのストアド プロシージャ
                  は "ASPState"
                  データベースにインストールされます。
                  SQL. (既定値) を再起動した場合、データは持続されません。
                  p: 持続です。セッション状態とストアド プロシージャの両方を
                  "ASPState" データベースに格納します。
                  c: カスタムです。セッション状態データとストアド プロシージャ
                  の両方をカスタム
                  データベースに格納します。データベース名を指定しなければ
                  なりません。
-d <データベース>       -sstype が "c" であるときに使用するカスタム
                  データベース名です。

SQL Serverを使用するセッション状態の構成

<configuration>
  <system.web>
    <sessionState mode="SQLServer" sqlConnectionString="Server=localhost;Integrated Security=SSPI;" />
  </system.web>
</configuration>

接続ログイン(Windows認証の場合はIISのワーカープロセスの実行アカウント)に、ASPStateデータベースのdb_ownerデータベースロールが必要。

ToArray メソッドから厳密に型指定された配列を返す方法

Visual C# を使用して ToArray メソッドから厳密に型指定された配列を返す方法
ArrayList のパラメータなしの ToArray メソッドは、Object 型の配列を返す。この配列は、厳密に型指定された配列にキャストできない。
以下のコードはSystem.InvalidCastException の例外でエラーになる。

Customer [] customer = (Customer[])myArrayList.ToArray();

正しくは以下のように、オブジェクトの型をパラメータとして受け取る、オーバーロードされたToArray メソッドを使用する。

Customer [] customer = (Customer[])myArrayList.ToArray(typeof(Customer));

※C# では暗黙のキャストを許可していないため、ToArray メソッドの結果を明示的にキャストする必要がある。