ASPからコールするCOMコンポーネント
VBでASPからコールするActiveX DLLやActiveX EXEを作成する場合のポイントらしきものです。
- データ型
ASPで使用するスクリプト言語は型がありません。したがって
- 引数はByValで
- ByRefで渡す引数はVariantに
- プロジェクトのプロパティ
- 「対話型インターフェースの抑制」にチェック
- 「メモリに保持」にチェック
- スレッドモデル
- スコープがApplication---シングル スレッド
- スコープがSession-------アパートメントスレッド
- ASP組み込みオブジェクトへのアクセス
以下の2つに参照設定を行って、ASPからと同じように、Response.Writeでクライアントへの出力を行ったり、Request.ServerVariablesで環境変数を取得したりすることができます。
- COM+ Services Type Library(Win2K以降の場合。9xやNTは)
- Microsoft Active Server Pages Object Library
ASP組み込みオブジェクトにアクセスするには、GetObjectContextメソッドを使います。Responseオブジェクトを例に取ると
Dim aspResponse As ASPTypeLibrary.Response Set aspResponse = GetObjectContext("Response") Call aspResponse.Write("Hello ASP!")
と言うような感じです。このとき、クラスのMTSTransactionModeプロパティが、"NotAnMTSObject"ではうまくいきませんでした。"Uses Transaction"にするとうまくいきましたが、どういう値であるべきかまでは調べていません。
また、この処理を、Class_Initiarizeプロシージャに記述したオブジェクトを、Global.asa内で生成したり、アプリケーションスコープのobjectタグで宣言すると、うまく動作しないようです。
(04/01/24 追記)
Applicationスコープにするには、スレッドモデルがBothまたはNeutralのコンポーネントを作成する必要があります。つまり、VBで作成することはできません。
トラックバック
- このエントリーにトラックバック:
- http://frog.raindrop.jp/cgi-bin/mt/mt-tb.cgi/106
コメント
丁度ActiveXドキュメントEXEを作成していたところだったので、参考になります。ちなみに、
3.ASP組み込みオブジェクトへのアクセス の
COM+ Services Type Library(Win2K以降の場合。9xやNTは)
の続きは 「Microsoft Transaction Server Type Library (mtxas.dll) を参照設定に含める」が正しいのではないでしょうか。
そのとおりですね。
これを書いていたときは、
私もまだASPを始めたばかりで手探り状態だったので、間違った情報が含まれています。
たとえばApplicationスコープならシングルスレッドとなっているのは間違いで、スレッドモデルはBoth、またはNeutralである必要があり、つまりVBで作成することはできません。
他にも間違いがあればご指摘ください。
にゃるほど~。
勉強になります。
1週間前から初めて
今日はじめてVB内でRequestとかSessionが
見れることを知りました。
おお!という感じです。