ASPの限界…


最近仕事でasp(VBScript)をいじってます。久しぶりのasp…相変わらずやりづらいです。構文に慣れないし実装がしょぼい。
今回は大したプログラムじゃないんだけど、ちょっとトリッキーな事をしてるので色々と苦戦中。でもだいたいの問題は片づいて、残るは一つだけ。
残る問題は「実行しているaspファイル自分自身のファイル名を求める。l
意外とできそうでできない。ちなみに環境変数(Request.ServerVariables)からファイル名を求めることができるんだけど、求めたいファイル名は「Server.Executeコマンドで実行された別のaspファイル内での自分自身のファイル名」なので環境変数からではわからないのです(親のファイル名しかわからない)。
他にはわざとエラー発生させて、エラー情報にファイル名載ってないかなとか調べたんだけど、これも駄目だった。
結局、試行錯誤した挙句、今のところの結論は「ファイル名を求めることは不可能。」です。
本当はファイル名なんていらないのでServer.Executeの時に何らかの方法で変数を引き継げてたら何の問題もなかったんだけどね。
ますますaspがしょぼく見えてきた…。

泣く泣くの別解としてApplicationオブジェクトを使ってデータを渡すしかないかなぁ。本当は今回のシステムの関係上、ちょっといやなんだけど。

というわけで、aspで自分自身のファイル名を求める方法募集中。縛りは以下のとおり。

・環境変数(Request.ServerVariables)からは求めることができない
・標準オブジェクトのみ使用可能(BASPとかああいった類は使用不可)
・IIS5.0でもIIS6.0でも動作する。

…と、募集してみたものの、多分解決策はないと思う今日この頃。

作成日:2008/04/02 02:06:14
トラックバック  ※トラックバックは承認後に表示されます。
TrackbackURL:このページのトラックバックの受付は終了しています。

トラックバックはありません。
コメント
1
セッションで・・・ジョージ 3Apr2008 09:37AM
お久しぶりです。
先日の電話は焦りましたw

ファイル名ですが、Applicationがだめなら、Sessionや一時的にDB格納で^^;
Server.ExecuteもServer.Transferも
呼び出し元、呼び出し前の変数が引き継げないので
使い辛いです・・・
結果、SSIの#INLUCDE FILEに頼っています。

Server.CreateObject("WScript.Shell")と
呼び出し元ファイル名を返すようなプログラムを作成すれば、ひょっとしたらできるかもしれませんね。
2
そうし 6Apr2008 07:20PM
> ジョージ
ども、お久しぶりです。
確かにこないだの電話はあせったよ。
急に振られたのでw

ファイル名の件、もうひとつ制約を忘れてました。ページ遷移はないのでセッションとSSIも駄目かな。。。
WScript.Shellも考えたけど、そこまで複雑にしても他に人が見たときにカオスなソースになるのでやめましたw
(昔、php+Cの組み合わせでプログラム作ったときに引継ぎが面倒だった事があったなぁ…)

結局はApplicationしかないという結論に。
他の色んなシステムの設定ファイルを取り込むというトリッキーな仕掛けがあるので、とりあえず激しくユニークな変数名にしておけばかぶる事はないかなぁと(^^;

名前:

タイトル:

コメント: