ASP VBS global.asa Session_OnStart内で環境変数を取得する方法は?

このQ&Aのポイント
  • global.asa内のSession_OnStart内で環境変数を取得する方法について教えてください。
  • global.asaファイル内で直接文言を記述する代わりに、環境変数から取得するプログラム修正をする必要があります。
  • IIS 6およびWindows Server 2003の環境下で、global.asa内で環境変数を取得する方法について情報を探しています。
回答を見る
  • ベストアンサー

ASP VBS global.asa Session_OnStart内

ASP VBS global.asa Session_OnStart内でサーバーの環境変数取得 教えてください。global.asa内で環境変数って取得できるのでしょうか? 今までglobal.asaファイル内で直接書いていた文言を、環境変数から取得する、 というプログラム修正をしなければならなくなりました。 まず、VBSファイルを作成して、環境変数を取得することはできました。 その内容でそのままglobal.asaに記述すると、おそらく、環境変数が正しく取得できません。 このおそらくというのは、エラーが表示されないのです。 ただ、取得できていないので、その後の処理でエラーとなります。 環境は、 IIS 6 Windows2003server です。 いろいろ調べているのですが、いい回答が見つからず。 そもそも、global.asa内で環境変数を取得できるのかも分からず。 お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

環境変数はサーバサイドに設定されているのですよね? VBSで出来たのであれば、それをサーバサイドで実行するだけです。 下記のコードの「□」を「半角スペース2個」に置換して試してください。 ※Global.asa <SCRIPT LANGUAGE=VBScript RUNAT=Server> Sub Session_OnStart □Set objWS□ = Server.CreateObject("WScript.Shell") □Session("tmp")□= objWS.ExpandEnvironmentStrings("%TEMP%") □set objWS□ = Nothing End Sub </SCRIPT> ※test.asp <HTML> <HEAD> □<TITLE>環境変数取得</TITLE> </HEAD> <BODY> □<b>パターン1</b><br /> □<% □□Response.Write Session("tmp") □%> □<br /> □<br /> □<b>パターン2</b><br /> □<% □□Set objWS = Server.CreateObject("WScript.Shell") □□Set objUSR = objWS.Environment("USER") □%> □<table border=1> □□<caption>システム</caption> □□<% □□Set objSYS = objWS.Environment("SYSTEM") □□For Each objItm In objSYS □□%> □□□<tr> □□□□<td> □□□□□<% □□□□□□Response.Write objItm □□□□□%> □□□□</td> □□□</tr> □□<% □□Next □□Set objSYS□= Nothing □□%> □</table> □<br /> □<table border=1> □□<caption>ユーザ</caption> □□<% □□Set objUSR = objWS.Environment("USER") □□For Each objItm In objUSR □□%> □□□<tr> □□□□<td> □□□□□<% □□□□□□Response.Write objItm □□□□□%> □□□□</td> □□□</tr> □□<% □□Next □□Set objUSR□= Nothing □□%> □</table> □<% □□Set objWS□ = Nothing □%> </BODY> </HTML> http://www.whitire.com/vbs/tips0115.html http://www.vacant-eyes.jp/tips/twsh/090.aspx http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh14/cformwsh14_04.html

okwaveid_619
質問者

お礼

返事遅くなりました。とても丁寧にご説明いただきありがとうございます。 とっても助かりました!!!

関連するQ&A

  • Global.asaについて

    お世話になります。 今回ASPを使用してアプリケーション開発をしております。 データベースに接続して、データを拾おうと思うのですが、そのデータベースへの宣言などをGlobal.asaでしようと試みている途中で止まってしまいましたので・・・ Global.asaはルートディレクトリにおいてあり、IISでの設定はセッションONになっております。 テスト的に実行するため、 <SCRIPT LANGUAGE="VBScript" RUNAT="Server"> Sub Application_OnStart Application("test") = "" End Sub Sub Session_OnStart Application.Lock Application("test") = "ttt" Application.UnLock End Sub </SCRIPT> とGlobal.asaには記述してあります。 ASPには <% Response.Write test %> と記述してありまして、実行しますと「ttt」と表示されません。なにか間違っている部分はあるのでしょうか?

  • Global.asaについて

    すみません。お世話になります。 クラシックなほうのASPで、webを作りました。 のですが、ログイン管理を軽視してしたため、あとからつけたすことになりました。 で、誰がいつログインして、いつ抜けているのかの記録を取りたいのですが、調べたとことろ、Global.asaというものでできる様子。 Sub Session_OnStart で、 sCoString = "DBQ=" & Server.MapPath("XXX.mdb") & ";"・・・などのDBへの接続先を記述し、rs.AddNew とかで記録!というわけにはいかないのでしょうか? どうしたらこういったことが実現できるのか、教えていただけますでしょうか。もし参考になるサイトなどあれば、ご教授いただけると助かります。

  • Session_OnStartを見てくれなかったりする?

    【したいこと】 セッション開始時に global.asa内のSub Session_OnStartでApplication.Contents("AAA")="111"を実行させる。 【起きている現象】 アプリケーションの起動時(ファイルを編集したりした後)にのみ、Sub Session_OnStartもしくは、Sub Application_OnStartを辿る(←これもまちまち)が、 その後、ブラウザを全て閉じても、global.asaを通ってくれない。 Sub Application_OnStart Application.Contents("AAA") = "" Sub End Sub Session_OnStart Application.Lock Application.Contents("AAA") = "aaa" Application.Unlock Sub End こんなかんじです。 ASPファイルからもApplication.Contents("AAA")にアクセスしていると考えてください。 情報が少なくて申し訳ありませんが なにか思い当たることがあればお願いします。

  • Win2000でSessionが切れない。

    win2000 プロフェッショナルサーバ IIS5 で環境を作成しASPのテストを したのですが、何時間待ってもSessionが切れずに困っています。 エイリアスはきちんと切っていますし、グローバルasaもその中にきちんと 入れてあります、何が原因なのかさっぱり分かりません。 どなたか、分かる方いましたら参考意見でもよろしいのでお願いします。

  • oracleを利用できません。(global.asa利用)

    asp + oracle + oo4oをglobal.asaファイルを利用して プログラムを組むことになりまして、ネットでサンプルファイルを見つけまして 実行したところエラーになっていまいます。 サンプルは以下の通りです。 ----global.asa--- 'OO4O用の設定 <OBJECT RUNAT=Server SCOPE=Application ID=OraSession PROGID="OracleInProcServer.XOraSession"> </OBJECT> <SCRIPT LANGUAGE=VBScript RUNAT=Server> Sub Session_OnStart 'OO4O用の設定(Net*8を使用してOracle8に接続する) Set Session("OraDatabase") = OraSession.DbOpenDatabase("sun151_ora803", "scott/tiger", Clng(3)) Set Session("OraDynaset") = Session("OraDatabase").DbCreateDynaset("select * from emp order by empno", Clng(4)) End Sub Sub Session_OnEnd Set Session("OraDynaset") = Nothing Set Session("OraDatabase") = Nothing End Sub </SCRIPT> ---global.asaここまで--- ---emp_o1.asp--- <%@ LANGUAGE="VBSCRIPT" %> <HTML> <HEAD> <TITLE>emp_o1.asp</TITLE> </HEAD> <BODY> <% '変数の設定 Dim OraDatabase Dim OraDynaset Dim OraFields Dim fieldNum Dim recNum Set OraDatabase = Session("OraDatabase")   ↑ここでエラーがでます。(line17) Set OraDynaset = Session("OraDynaset") --以下略 ---emp_o1.aspここまで--- エラーとして エラー タイプ Microsoft VBScript 実行時エラー (0x800A01A8) オブジェクトがありません。: '[undefined]' /rhc/emp_o1.asp, line 17 というのが出てしまいます。 VBとoracleの経験はあるのですが、aspは今回初めてです。 しょうもない質問かもしれませんが、どなたかよろしく お願いいたします。

  • global.asaについて

    ASPからMySQLにアクセスしたいのですが、 ・Microsoft OLE DB Provider for ODBC Drivers エラー '80004005' ・[Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバが見つかりません。 のエラーが表示されていしまいます。 global.asaを作成してみたのですが、 Active Server Pages エラー 'ASP 0224' TypeLib を読み込めません /LM/W3SVC/1/Root/sample/global.asa, 行 1 METADATA タグで指定されたタイプ ライブラリを読み込めません。 というエラーがでてしまいます。 glovbal.asaというのは必ず必要なのでしょうか? 必要な場合、最低限、どのような記述をすればよいのでしょうか?

  • ASP Session変数名の取得

    ASP(VBScriptにて)現在使用されているセッション変数の一覧を変数名(Key)と共に取得したいです。 どのようにすればできますか?

  • 複数Webサーバーでのセッション共有

    よろしくお願いいたします。 Win2003 IIS6.0上で、ASP.NetではなくASPでアプリケーションを作成しています。 Webサーバーは2台構成でロードバランサーで負荷分散されております。(どちらもIIS6.0) ロードバランサーの設定がどうなっているかはよくわからないのですが、同一ユーザーは同一サーバーに振るといった設定がなされていないようで、リクエストに応えるサーバーがリクエストのたびに異なるという現象が起こっています。 ですので、前画面と異なるサーバーがリクエストに応えたときにセッション変数の値が取得できないという事態に陥っています。当然なのですが。。。 訳あって、ロードバランサーの設定は変更できないので、IISかアプリケーション側で解決する必要があるのですが、調べていると、「State Service」なるものを発見しました。 http://www.atmarkit.co.jp/fdotnet/dotnettips/183aspsesout/aspsesout.html 本番機なのでうかつに試すわけには行かないのですが、 ASPアプリケーションのセッション管理にも「State Service」は有効でしょうか?ASP.Netアプリケーションは・・・というような説明書きでしたので、質問させていただきました。 ご存知の方がいらっしゃいましたらご教示ください。

  • ASP(IIS?)のエラーについて

    お世話になっております。 ASPのプログラムをやっている者なのですが、分かるかたいましたらご教授ください。 環境はWin2003Server+IIS6.0になります。 上記の環境で自部門のWebサーバーのプログラミングをしているのですが、ここ最近 「HTTP/1.1 新しい Session の作成に失敗しました」 というASPエラーがでてしまいWebが見れない状態になっております。 内部公開用のサーバーで前任者が辞めてしまい、その後私が引き継ぐことになったのですが、サーバーにあまり詳しくないのもあり苦戦しております。 必死に原因と対策を探したのですが、これといった原因、対策方法が見つからず途方に暮れております。 探していて、なんとなくわかったことはIIS側に問題あるのではないだろうか?という事くらいです。 それも確定ではないのですが、非常に困っており何方か分かる方いらっしゃいましたら、是非ご教授願えませんでしょうか?m(__)m どうぞ、よろしくお願いいたします。

  • asp.netのクラスについて

    いつもお世話になっております。 asp.netの動作環境検証テストをしているのですが、クラスの動作で躓いております。 -------------------------------------------------- ≪テスト内容≫ visual web developer 2008にて作成したサイトのファイルをサーバ上へコピーしてテストしています。 App_Codeフォルダ内へclass1.vbファイル作成 フォームの'Dim test As New Class1'を記述 IISの仮想ディレクトリへサイトファイルを丸ごとコピー ブラウザで実行 -------------------------------------------------- ≪サーバ環境:≫ OS:windows server 2008 1. 以下をインストール asp.net .NET framework 2.0 2. IISマネージャのwebサービス拡張の画面で Active server pages ASP.NET 1.14… ASP.NET 2.0… を許可する 3. サイトのプロパティにてバージョンをASP.net2.0へ変更 -------------------------------------------------- ≪詳細≫ ローカル(開発環境)環境ではvisual web developerでのデバッグはエラーが出ないのですが、サーバへコピーすると以下のエラーが出てしまいます。 また、開発環境側では、他の開発環境(vb6等)が入っているため、'msgbox'が動作するなどサーバ環境へファイル移行した時と動作が違っている部分はあります。 ●ブラウザに表示されるエラー内容 説明: この要求を送信するために必要なリソースをコンパイル中に、エラーが発生しました。以下のエラーの詳細を確認して、ソース コードを修正してください。 コンパイル エラー メッセージ: BC30002: 型 'Class1' が定義されていません。 ソース エラー: 行 22: Dim test As New Class1 -------------------------------------------------- 今いち基本的なことを理解していないため、サイトの側の記述に問題があるのか、サーバ環境に問題があるのかの判断もつかない状況です。 見当違いな質問をしている可能性があるのですが、ご存知の方いらっしゃいましたらご教授頂けますようよろしくお願いいたします。

専門家に質問してみよう