トップページphp
983コメント364KB

<%= ASP総合 %> Part.4

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/07/03(日) 12:27:28ID:???
レガシASPについて語るスレです。質問や雑談もOK。
何より手軽なので社内イントラであればまだまだ第一線です。
ASP.net については専用スレッドでお願いします。

関連スレ:
【質問】ASP.NETスレ Part2【議論】
http://pc8.2ch.net/test/read.cgi/php/1111480331/

過去スレ:
==ASP== Part 3
http://pc8.2ch.net/test/read.cgi/php/1059401269/
==ASP== Part 2
http://pc2.2ch.net/php/kako/1028/10280/1028024916.html
==ASP==
http://pc.2ch.net/php/kako/984/984840107.html
0112nobodyさん2005/09/12(月) 21:57:37ID:???
>>110
そんな可変長配列の扱いはVBScriptには無い。
つーかそのサンプルがどんな意味なのか分からんが

Dim A()

B = Split(hoge, ",")
ReDim A(Ubound(B))
For nCnt=0 To UBound(B) Step 1
A(nCnt) = B(nCnt)
Next

やるならこんな感じだろうな
0113nobodyさん2005/09/13(火) 00:45:26ID:???
この例をもっと短くするなら
Dim A, B
B = Split(hoge, ",")
A = B
ですむな。
0114nobodyさん2005/09/15(木) 11:36:56ID:???
テキストエリアに入力された文字について、
前後に改行コードが入っていた場合はTrimで取り除けると思ってたんだけど、
除かれるのは、空白とかだけ。

文字列前後の改行コードだけを取り除きたい時は
どうすればいいのでしょうか?
0115nobodyさん2005/09/15(木) 11:41:21ID:???
strWriteData = Replace( strWriteData, vbCrLf, "" )
strWriteData = Replace( strWriteData, vbCr, "" )
strWriteData = Replace( strWriteData, vbLf, "" )
0116nobodyさん2005/09/15(木) 11:45:02ID:???
>>115
こうすると、文中の改行コードも全てなくなってしまうのでは?
0117nobodyさん2005/09/15(木) 20:37:02ID:???
>>115
細かいけどそれをやりたきゃvbNewLineで置換すればOKだぞ
そして>>116の言うとおり。

正規表現を使えばよかろう。

Set regEx = New RegExp
regEx.Pattern = "(^\s*)|(\s*$)"
regEx.Global = True
strWriteData = regEx.replace( strWriteData , "")
0118nobodyさん2005/09/16(金) 11:05:43ID:fPKBboZa
済みません、教えて下さい。

PDFファイルを生成するミドルウェアはなにがおすすめでしょうか。

・主にレコードセットから生成
・画像挿入
・ページ数制御
・ASP.NETに移行の可能性有り

これくらいの事しかやりませんので、
あまり多機能すぎて開発工数がかかりすぎるより、
多少、機能を削っても工数のかからないものがいいです。
予算は50万円くらいです。
(ユーザーを説得できるだけの機能があれば100万くらいまで可)

ASP
IIS 6.0
IE 6.0

よろしくお願いします。
0119nobodyさん2005/09/16(金) 20:35:57ID:???
「工数かからないように」の一要素であるノウハウの多さという意味で言うと
PDFlibあたりがいいんじゃない?
0120nobodyさん2005/09/28(水) 14:02:13ID:???
ASPで構造体は使えますか?
使えない場合、何か代替でよい手法がありますか?
0121nobodyさん2005/09/28(水) 22:04:29ID:???
>>120
VBScriptにもJScriptにも構造体はありません。
代替はプロパティだけのクラス。

クラス定義が、
class clstest
 public prop1,prop2,prop3
end class
こんな感じで、このクラスを返す関数が
function getTest(arg1,arg2,arg3)
 Dim obj
  set obj = new clstest
   with obj
    .prop1 = arg1
    .prop2 = arg2
    .prop3 = arg3
   end with
  set getTest = obj
 end function
こんな感じ。
 set retvalue = getTest ("val1","val2","val3")
とすれば
 Response.Write retvalue.prop1
で"val1"が出る。
0122nobodyさん2005/09/28(水) 22:23:19ID:???
>>120
JScriptの場合はここを参照
http://www.imasy.or.jp/~hir/hir/tech/js_tips.html#asp_capsulate
0123nobodyさん2005/09/29(木) 07:56:05ID:???
動的にプロパティの追加が出来るのはtypo耐性が低くてイカン
0124nobodyさん2005/09/29(木) 18:20:52ID:???
>>123
そこでUnitTestですよ。
0125nobodyさん2005/10/04(火) 23:10:08ID:???
ASPのサーバ側の処理を排他制御する場合はApplication変数ででも出来るけど
並列してWSHでも定期的に行うようにするため、
代わりにFileSystemObjectでのファイル書き込みオープンでロック制御を試してみた。

<HTML><BODY><%
set fso = createObject("Scripting.FileSystemObject")
set basp = createObject("Basp21")
Response.Write time & " " : Response.Flush
set olock = fso.openTextFile("c:\work\lockfile",2,true)
Response.Write time & " " : Response.Flush
basp.sleep 5
Response.Write time & " " : Response.Flush
olock.close
%></BODY></HTML>

二つの画面で動かして
[17:00:00 17:00:00 17:00:05]みたいな感じとファイルオープン失敗でaspエラーになる事を期待したら
[17:00:00 17:00:00 17:00:05]と[17:00:05 17:00:05 17:00:10]となった。

ファイルオープンを待って[17:00:00 17:00:00 17:00:05][17:00:02 17:00:05 17:00:10]ならまだ分かるが
なぜ二番目のアクセスで最初の一発目も実行されないで待ってるんだろう?
ロックとしては結果オーライではあるんだけど、何か不思議。
何かこれに関係しそうなドキュメントとかあったらURLキボン。
01261252005/10/05(水) 20:57:09ID:QIcIBhGo
質問age忘れた
0127nobodyさん2005/10/05(水) 22:43:21ID:???
>>125
ヒント: 遅延書き込み
0128nobodyさん2005/10/06(木) 23:16:49ID:???
>>127
遅延書き込みは関係ない気がする…
むしろ実行時にスクリプトを先読みしてる?

あそっか、ASPとかのスクリプトエンジンって
実行時にコンパイルしてんだよな(後の方の構文エラーとかも先に出るし)。
この場合ファイル名がリテラルだから…。
なるほどな。結構色々気を回してくれるんだなASP。
0129nobodyさん2005/10/07(金) 18:51:33ID:2Dl5nVCp
質問させてください

IIS(4.0)+ASP → ODBC → PostgreSQL

でADO接続しているのですが
.Close & Nothing 作業を行っても
Netstatで確認すると
数十秒コネクションが残ってしまいます。

ASPからDB接続するとデフォルトで
コネクションプールみたいな機能が
付いてたりするのですか?

(ODBCの接続プールは使用していません)

因みにVBScriptで作ってます。
0130nobodyさんNGNG
>>129
ASPに関わらず、netstatでみると殆どのアプリが数十秒コネクション残るよ
0131nobodyさん2005/10/08(土) 01:00:06ID:6j6nfXjs
まじっすか!!
実は2000人ほどログインするASPプログラムを
作成する予定なのですが
コネクションが数十秒残るとPostgreSQLでコネクション
限界に達してしまうんですよね…

接続プールやコネクションプールサーバを使用すれば
実現できるのでしょうか…
(もしくはロードバランサーで2台接続?)

みんなどうやってDB接続してるんだろう

情報(人-)謝謝(-人)謝謝です
0132nobodyさん2005/10/08(土) 02:12:07ID:???
>>131
DB側のコネクションとネットワーク層のコネクションは別な話だと思うが
0133nobodyさん2005/10/08(土) 11:04:49ID:???
>>131
ブラウザ→IIS間のセッションが増えても
その複数セッションに対して一つのコネクションを使いまわす事で
IIS→DB間のコネクション量が膨大にならないようにする
それがDBのコネクションプール
0134nobodyさん2005/10/08(土) 11:14:57ID:???
いいや違うね
0135nobodyさん2005/10/08(土) 13:05:50ID:???
端末〜Webサーバが同時に2000アクセスしても
Webサーバ〜DBへは同時に2000アクセスするわけではない。

下手すれば並列実行できずに待ち行列だよ
0136nobodyさん2005/10/08(土) 19:27:47ID:???
新規DB接続を生成するオーバーヘッドを減らす意味もあるでよ
0137nobodyさん2005/10/09(日) 03:12:32ID:/MEb5o0Y
DBソフト(PostgreSQL)の接続状況を見てみたのですが
やはりnetstatの接続内容と同じ内容になっていました。
netstat上でもClose後にESTABLISHのまま数十秒
コネクションを維持しています。

Close後にnetstatで見る情報がTIME_WAITEになっていたら
私も気にしなかったのですが…

ASPにてDBオープン

netstat上にDB接続コネクションがESTABLISHで発生する
PostgreSQL上でコネクションが確立する

ASPにてDBをクローズ
netstat上にDB接続コネクションがTIME_WAITEになる
PostgreSQL上のコネクションは開放される

数十秒後にnetstatからコネクション情報が削除される

が私の考える流れなんですが…

あってますか?

因みにASP上のDB解放作業って
Close & Nothing 以外ないですよね?

質問ばっかりですみません
0138nobodyさん2005/10/09(日) 11:12:59ID:???
なんでそんなに接続を切りたいの?
複数リクエストに対して一つの接続が
使い回せてればそれでいいじゃん。

いちいち接続を切断するのは逆にオーバーヘッドが増えるって。
0139nobodyさん2005/10/09(日) 12:04:16ID:???
>137
コネクションプーリングじゃないの?
0140nobodyさん2005/10/09(日) 13:48:51ID:???
>>137
ちなみにPowergesとは何を使って接続してるの?
0141nobodyさん2005/10/09(日) 20:46:04ID:???
>140
>129が>137の最初のレスのよーだがそこに書いてある
ODBC経由のADO接続らすぃ
0142nobodyさん2005/10/09(日) 23:02:23ID:MkiNfj/O
137です。

ASP側でDBをCloseさせた後数十秒間
DB側のコネクションが持続するのが正常な処理であれば
私も問題ないと思うのですが、
コネクションプーリングしていない状況で上記問題が
発生しているためどういう事なんだろうかと頭を悩ませているところであります。

現在
@そもそもそういう仕様なのか?
AODBCの接続プール以外にコネクションプーリングする機能がデフォルトで
存在するのか?
BASP、サーバ設定等で開放するための処理が漏れているのか?
で色々調べているところです。

ASP以外の問題であれば板違いなのですが
@ASPのDB開放処理はClose & Nothing 以外することはない?
AASPのDB接続にて同じような現象に陥った経験はありませんか?

ということを聞きたいです。
0143nobodyさん2005/10/09(日) 23:16:16ID:???
>>142
> @ASPのDB開放処理はClose & Nothing 以外することはない?
ない、、、というかこれ以上何かする方法もない

あとIIS4.0ってのはどうにかできないの?

っていうか、複数の端末から同時にIISにアクセスするとして、
IISって並列にDBにアクセスできるんだっけ??
0144nobodyさん2005/10/09(日) 23:43:28ID:MkiNfj/O
皆様ご回答ありがとうございます!

たまたま手元にあったIISが4.0だったというだけだったのですが
なるほど…IISという可能性もあるかもしれないですね

IISに関してはまだ調べていないんでなんとも言えませんが
少なくともASPのソース自体に問題が無いという事で
要因の一つが消えて安心しました。



0145nobodyさん2005/10/10(月) 00:37:37ID:???
>AODBCの接続プール以外にコネクションプーリングする機能がデフォルトで
存在するのか?

存在します。
http://www.microsoft.com/japan/msdn/dataaccess/mdac/pooling2.asp
の図を見ればODBCの他に
その前のOLEDBにResource Poolingがあるのが一目瞭然だと思います。
0146nobodyさん2005/10/10(月) 07:25:23ID:???
>>IISって並列にDBにアクセスできるんだっけ??
できます。

IISプロセスは当たり前にマルチスレッドなので
その各スレッドからのDBへのアクセスは並列になりますな。
0147nobodyさん2005/10/10(月) 21:44:46ID:47556GXn
Resource Poolingというのをはじめて知りました。
Microsoftのページは見てたつもりだったんですがお恥ずかしい(汗

どうやらADOでMDAC2.1以降を使用している場合
デフォルトで動作するようでこれが原因である可能性が
高い気がしてきました

テストしてみます

ありがとうございました
0148nobodyさん2005/10/23(日) 20:30:47ID:???
<input type = file>で参照したcsvファイルで
work_Aというテーブルに書き込めるようなプログラムはどう書けばいいのでしょうか?
参照するcsvはwork_Aテーブルとカンマで区切られて同一構造になってます。
サーバーはSQLサーバーです。
分かりづらい説明かもしれませんが宜しくお願い致します。
0149nobodyさん2005/10/23(日) 23:46:53ID:???
Global IP のあるフロントエンドサーバーが ASP で、
LAN にある FreeBSD から text/html なデータをだしたいんだけど、
どういう風にすればいいんですか?便利な proxy とかありますか?
0150nobodyさん2005/10/24(月) 00:49:30ID:???
>>148
一旦アップロードしたうえでfsoかadoで普通に読む
or
ADODB.Streamでアップロードも含めて一括でやる
0151bob2005/10/24(月) 14:53:50ID:txJyGq/T
違うスレでかいたのですがこちらに誘導されましたので
質問させて下さい。
会社でwebデザインをしています。プログラムはASPを使っており
外注しております。そのためASPに興味が出てきたため勉強をしたいのですが
なにから勉強したら良いか分かりません。ASP+SQLServerLです。
また良い参考書などがありましたら教えて頂けますか?
宜しくお願いします。
0152nobodyさん2005/10/24(月) 16:26:50ID:???
ttp://tryasp.winscom.co.jp/
0153nobodyさん2005/10/24(月) 20:34:52ID:???
>>149
FreeBSDのマシンで普通にWebサーバ動かしておいて
フロントエンドサーバからXMLHTTPとか使ってFreeBSDサーバからデータを取って
そのままクライアント送り出すとかが安直でいいのでは。

>>151
ttp://www.gihyo.co.jp/books/syoseki.php/4-7741-1331-X
これ結構おすすめ。
0154nobodyさん2005/10/24(月) 22:19:47ID:???
ASPを勉強中なのですが、サンプルでわからないところがあるので教えていただけないでしょうか?
<%
sCoString = "DBQ=" & Server.MapPath("./sample.mdb") & ";"
sCoString = sCoString & "DefaultDir=" & Server.MapPath("./") & ";"
sCoString = sCoString & "Driver={Microsoft Access Driver (*.mdb)};DriverId=25;"
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open sCoString

sSQL = "INSERT INTO tablename SELECT * FROM [TEXT;DATABASE=C:\mdb].[test.csv]"

Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sSQL, cn, 3, 3, 1
set rs = nothing
set cn = nothing
%>

とあるのですが、下のほうに
rs.Open sSQL, cn, 3, 3, 1
とあるのですが、
この3,3,1という数字は何なんでしょうか?
どうぞよろしくいお願い致します。
0155nobodyさん2005/10/24(月) 23:02:13ID:???
カーソルモードを定数化もしていないようなそんなウンコなサンプルは捨ててしまえ!
0156nobodyさん2005/10/24(月) 23:32:16ID:???
>>154
静的カーソル
ReadOnly
コマンドテキスト
0157nobodyさん2005/10/24(月) 23:33:11ID:???
>>153
俺もそのテキスト気に入ってる
0158nobodyさん2005/10/24(月) 23:44:59ID:???
>>154
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpado260/htm/mdmthrstopen.asp
0159nobodyさん2005/10/26(水) 01:22:49ID:???
複数行入力できるフォームを作り、入力された文中にある特定の行と列の数値で計算を行いたいのですが、
どのような考え方やプログラムを行えばいいでしょうか?
入力する文は数値以外は固定です

例)--------------------------------------
************************** 100

*********** 200 ******

    ****300
    ****400

****************500

-----------------------------------------

0160nobodyさん2005/10/26(水) 01:43:44ID:???
>159
正規表現。
それがイヤなら数値の前後の文字列をInStrとかで検索して
場所を特定してからMidなどで数値だけ抽出。
(関数名はVBScriptの場合)
0161nobodyさん2005/10/26(水) 20:54:07ID:???
>>159
数字以外が固定なら数字のところだけinput type=textにした方がいいんじゃないか…
余計なお世話だが、一度そういう無理をしてしまうと
後々になって全角も認識するようにしろとか
「3千」とかも読み取れるようにしろとか
だけど「八千代商事」とかはスルーしろとか
だんだん要求がアホらしくなっていったりしていくんじゃないかと心配してしまふ
0162nobodyさん2005/10/26(水) 20:58:37ID:???
>>161
ime-mode:disabled と javascript で isNaN かけるとモアベター
0163nobodyさん2005/10/27(木) 00:32:40ID:???
今、会社でASPの勉強をしているのですが、COMをかなり利用していて全然理解できません。
クラス化とかさっぱりわからないのですが、なにかいい参考書やHPはないでしょうか?
よろしくお願い致します。
0164nobodyさん2005/10/27(木) 00:38:09ID:???
>>163
きついようだけど、レガシASP程度で全然理解できないとなると、、、、

多分、ASPの日本語の参考書って10〜20冊くらいしか出てないから
本屋で好きなのを買った方がいい。
0165nobodyさん2005/10/27(木) 02:38:55ID:???
>>160
ありがとうございます。何とかInStrやMidなどを使い数値を抽出することができました
本で正規表現を読みましたが、短期間ではちょっと理解ができませんでした・・・

>>161
もともと別データから抽出したデータ中の必要な数値データを計算するだけなので問題ありません
心配ありがとうございます
0166nobodyさん2005/10/27(木) 08:01:10ID:???
>>163
いやでも自作COMコンポーネントをたくさん使ってると
後から予備知識無しだと全然読めないよね…
0167nobodyさん2005/10/28(金) 22:10:00ID:???
>>166
自作COMコンポーネントだったら参考書買っても無理だろ
0168nobodyさん2005/10/30(日) 01:43:33ID:???
ASPで翻訳サイトなどにあるクリックすると枠内にあるテキストが消えることってできるんでしょうか?
ソースを貼り付けて実行しようとしてもエラーが出てしまいます。
0169nobodyさん2005/10/30(日) 01:47:13ID:???
>>168
クリックするとテキストボックスが消えるってのはJavaScriptではないのか?
0170nobodyさん2005/10/30(日) 02:50:12ID:???
InterDevでASPの勉強してるんですが、
デバックって皆さんどうやってるんでしょうか?
ASP.NETみたいにブレークポイント作っても止まってくれませんよね?
イベントドリブンじゃあないから当たり前なのでしょうか?
今は、logファイルに変数を出力してやってますが、ほかになにかないんでしょうか?
0171nobodyさん2005/10/30(日) 03:48:29ID:???
>>170
Microsoft Script Debugger の最新版でできる。
俺は使わないけど。
0172nobodyさん2005/10/30(日) 20:29:07ID:???
アンケート画面をつくりたいのですが、
項目の1つに選択項目が7,8個ありまして、
それを1位から再下位まで順番をつけてもらいたい項目があるのですが、
どんな形で実現すればよろしいでしょうか?
アドバイスお願い致します。
0173nobodyさん2005/10/30(日) 21:16:35ID:???
>>170
Response.Write "<HR>" & 変数 & "<HR>"
Response.flush

とかを途中にぶち込むと画面は乱れるが大体どうなってるのか分かる
ログファイルに書き出すより、画面の描画の進度と見比べられるので俺は好み。

>>172
Javascriptのテクニックになるのでスレ違いだな
0174nobodyさん2005/10/30(日) 23:39:29ID:???
なんか、クライアントサイドとサーバサイドの区別も付かないヤツが多いな。
とりあえずJavaScriptくらい極めればいいのに。
そうすればJScriptでASP組めるし。
0175nobodyさん2005/10/31(月) 02:33:29ID:???
>172
テキストフィールドを1つ用意してカンマ区切りで入力してもらえば?
0176nobodyさん2005/11/01(火) 18:17:13ID:???
すみませんがスレ違いかもしれませんが教えてください

Server2000から2003に移行をしているものです。
IIS5.0では上手くいってなのですがIIS6.0にした途端
Session変数(関数?)がページ間で上手くわたらないのですが
なにかIIS6.0の設定が必要なのでしょうか?
クッキーもページ間で値渡しができなくてこまっています。
(クッキー自体はもしかしたら登録すらできてなかも・・・。)


いろいろ調べたのですが、なかなか出来なくて困っています
もしよろしかったら教えてください。
IIS5.0 プロセス分離モード ってやつもやってみましたがダメでした
0177nobodyさん2005/11/01(火) 18:19:52ID:olXap06e
>>176
ageときますスミマセン

おなじ事をサーバーで行なうと上手くいきます。クライアント側がさっぱりなのです
0178nobodyさん2005/11/01(火) 20:50:26ID:???
>>176
クライアントのセキュリティ設定が
その2003サーバに対してCookieを拒否するようになってたりせんか
0179nobodyさん2005/11/01(火) 21:44:58ID:???
>>176
ローカルだとうまく動くんでしょ?
なら >>178 の言うとおりIE側の設定じゃね?
新しいサーバのホストは信頼されてる?
01801762005/11/01(火) 21:44:58ID:???
>>178
そうかもしれませんが、server2000では何も設定せずにうまくいくのに
server2003だとクライアント側を設定しなければならなとなると、導入に問題なのですが・・・。
IISの設定じゃないのですかねぇ??
0181nobodyさん2005/11/01(火) 21:45:56ID:???
>>179
ホスト→ホスト名
01821762005/11/01(火) 21:48:44ID:???
>>181
ホスト名・・・。しらべてみます。うまくいったら報告します。
01831762005/11/01(火) 21:55:48ID:???
ホスト名 ビンゴ!!。アドレスにコンピューター名を入れていました。
IPアドレスにしたら完璧に動きました。(LAN内ですので)

みなさまどうもお騒がせしました。まじ感謝です
0184nobodyさん2005/11/01(火) 22:40:03ID:???
お世話になります。

現在、asp上のリンクをクリックするとDBにバイナリデータで格納されているpdfファイルを読み込み、
ブラウザに表示をさせるという処理を行っているのですが、
ブラウザに表示できる端末とダウンロードのダイアログが出てきてしまう端末があります。
色々原因を探っているのですが、
今現在わかっているのはダイアログが表示される端末は
全てAcrobat Reader5.0がインストールされているものだということだけです。
しかし、Acrobat Reader5.0がインストールされていてもブラウザに表示できる端末もありました。
また、Acrobat Readerの設定(ブラウザで表示するかどうかの設定)が悪いのかと思いましたが、
pdfファイルをブラウザに放り込んでやるとちゃんとブラウザ上で表示されていました。
さらに、正常に表示できる端末では、
右クリック→対象をファイルに保存 としてやると正常にpdfを保存することが出来ますが、
ダイアログが表示される端末では 対象のファイルがありません のようなエラーメッセージが表示されてしまいます。
ちなみに、現在他のシステムも稼動していますので、
環境を変化させないために全ての端末にAcrobat Readerの最新版をインストールするということは出来ません。

現在わかっていることはこのぐらいなのですが、
ダイアログが表示されてしまう原因は何なのでしょうか?
また、上記で「ブラウザ」と表記しているものは全てIE5.5以上です。
0185nobodyさん2005/11/02(水) 04:34:36ID:8yGkDJEQ
ASPからWMIを使用し、JScriptで記述した場合の問題に直面しています。

あるフォルダの所有者を取得したいのですが、
VBScriptで以下の用に記述した場合は問題なく動作します。

<%
strFolderName = "C:\\Sample"
Set objWMIService = GetObject("winmgmts:")
Set objFolderSecuritySettings = objWMIService.Get("Win32_LogicalFileSecuritySetting='" & strFolderName & "'")

Dim objSD

intRetVal = objFolderSecuritySettings.GetSecurityDescriptor(objSD)

If intRetVal = 0 Then
Response.Write( "Ownerは[" & objSD.Owner.Name & "]" )
Else
Response.Write( "Couldn't retrieve security descriptor." )
End If

On Error Resume Next
%>
0186nobodyさん2005/11/02(水) 04:35:05ID:8yGkDJEQ
しかし、JScript版で以下の用に記述した場合、
'Owner' は Null またはオブジェクトではありません。 と表示されます

<%
var strFile = "C:\\Sample";
var objWMIService = GetObject("winmgmts:");
var objFolderSecuritySettings = objWMIService.Get("Win32_LogicalFileSecuritySetting='" + strFile + "'");

var objSD;

varintRetVal = objFolderSecuritySettings.GetSecurityDescriptor(objSD);

if ( intRetVal == 0 ) {
Response.Write( "Ownerは[" + objSD.Owner.Name + "]" );
} else {
Response.Write( "Couldn't retrieve security descriptor." );
}
%>

JScriptで記述した場合、何故objSDはundefinedになってしまうのでしょうか?
どなたかこの現象の原因のわかる方どうか解決方法のご指示をお願いします。
m(__)m

0187nobodyさん2005/11/02(水) 09:07:57ID:???
>>186
> var objSD;

JScriptの場合、これだけでは定義したとはいえない。
この状態で objSD の値は null 兼 undefined
0188nobodyさん2005/11/02(水) 09:10:34ID:???
>>184
Response.ContentType を明示的に宣言してる?
01891862005/11/02(水) 09:56:01ID:8yGkDJEQ
>>187

レスありがとうございます。

自分ではGetSecurityDescriptor()にobjSDを渡せば、
内部でobjSDに対して何某かのインスタンスが生成されて
情報がセットされ戻ってくると思い込んでいたのですが、

それはつまりGetSecurityDescriptor()に渡す前に、
既に何某かの型でインスタンスを生成してobjSDに参照させていないのが
今回の原因ということでしょうか??
0190nobodyさん2005/11/02(水) 19:01:42ID:???
>>184
ブラウザのキャッシュを空にしたりすると動きが変わるかも知れない
それを差し引いてもAcrobatReaderの設定は揮発するから微妙なところだな

んで他のシステムではAcrobatReaderを何に使ってる?
他の同様のシステムではPDFがブラウザでちゃんと表示できてるのであれば
>>188氏の言うとおり、ContentTypeでapplication/pdfを明示的に指定することで
うまく行くようになるかも知れないと思われ
0191nobodyさん2005/11/02(水) 20:33:25ID:???
>>186
JScriptには参照渡しが無いからそういうメソッドは使えねえべ
0192nobodyさん2005/11/02(水) 22:59:56ID:???
>>189
>>191氏も言っているがJScriptにおける代入は "=" のみ。
関数の引数は全て読み込みのみになる。つまり値渡しか使えない。
関数の中で引数の値を変更しても、外には出れない。


01931842005/11/02(水) 23:46:26ID:jsGUnMcJ
>>188>>190
どうもありがとうございます

>>Response.ContentType
Response.ContentTypeはapplication/pdfを指定しています。

>>キャッシュ
IEのインターネットオプションでキャッシュを削除してみたところ、
1台のみpdfが表示できるようになりました。
しかし、表示できるのは初回のみで、
2回目以降は表示できませんでした。
また、no-cacheの指定もしてみたのですが、
この指定をしてしまうと初回時に表示することが出来なくなってしまいました。
(Microsoftのサポートページにキャッシュを制限する指定をすると
ダウンロードダイアログが表示されてしまうという既知の問題が載っていましたので、
おそらくこれが原因だと思われます。)

また、他のシステムで実際にpdfが使用されているのかはよくわからないそうです。
しかし、やはり環境を変えたくないという事と、
端末は各店舗にあり、使用しているのはパソコンの素人であることから
Acrobat Readerのアップグレードはしたくないそうです。


長くなりましたので2つに分けます。
0194193続き2005/11/02(水) 23:47:30ID:jsGUnMcJ
以上のことにより、代替案を考えてみました。

DBからバイナリデータを読み込み、一時ファイルとしてサーバーに書き出す。
そのファイルに対してリダイレクトを行う。

というものなのですが、この案にも問題があります。
1.ASPには標準ではバイナリデータの書き出しが出来ないので、どのようにして一時ファイルを書き出すのか。
2.pdfには個人情報が含まれているので速やかにファイルの削除をしたいが、
pdfの読み込み終了を待ってからファイルの削除をすることが出来るのか。
の2点です。

1に関しては、ADODB.Streamというものがあるそうですが、
現在ではセキュリティの問題上、IEでは使用することが出来ないそうなのです。
色々調べてみたところ、BASP21というものが存在し、
それを使用すれば書き出すことが出来るそうなんですが、
現在自宅に居るため確認が取れない状態です。

2に関しては、1日に一回バッチを走らせてファイルを削除することを考えていますが、
24時間という時間が「速やか」かと言われると問題があると思います。


>>184の内容、もしくは今回の代替案に関して
こうしたらいいのではないかという意見がありましたら教えていただけないでしょうか?
0195nobodyさん2005/11/03(木) 11:31:14ID:???
>現在ではセキュリティの問題上、IEでは使用することが出来ないそうなのです。

その書き出しはサーバ内で行われるものでしょ?
IE関係ない。ADODB.Streamで普通に出来る。

>2.pdfには個人情報が含まれているので速やかにファイルの削除をしたいが、
>pdfの読み込み終了を待ってからファイルの削除をすることが出来るのか。

普通に考えると出来ないね。
他の方法を考えた方が良さそうだな。

あとはダメ元でcontent-disposition:attachmentとかを使ってみると
関係無さそうだけどまた状況が変わるかも…

つかそれ以前にその状況って、pdf直リンクならちゃんと開けるのか?
Content-typeをちゃんと設定してバイナリ吐くんだったら
クライアント側に流れるパケットはpdf直リンクとほぼ同じになるはずなのだが?
直リンクでちゃんと開けるのであったら…本気で解決したいなら
etherealとかでpdf直リンクの場合とバイナリ出力aspの場合の
それぞれのレスポンスヘッダをキャプチャして違いを見てみて、
違いがあったらバイナリ出力aspにヘッダを追加する。
それが一番手っ取り早い。
0196nobodyさん2005/11/03(木) 11:35:02ID:???
>>194
AcrobatReader5 のブラウザ内表示は悲惨なんだよ。
「Web表示用に最適化」がONになってるPDFをブラウザ表示させるとページが落丁したりする。

Adobeのサポートページに色んな情報があるから見てきな。
0197nobodyさん2005/11/03(木) 11:37:29ID:???
>>193
PDFのブラウザ表示はクライアント側の設定に依存するから
サーバ側でどんなにやったって無理なものは無理だよ。
01981862005/11/03(木) 20:35:58ID:KtvlL72l
>>191,192
レスありがとうございます。

そしてJScriptに参照渡しが無いことを始めて知りました...orz
当たり前に存在するものだと...orz

するとJScriptではGetSecurityDescriptor(引数)に値する処理は、
行えないのでしょうか?

それともまったく別の記述方法でならDACLに値するものを取得することは
可能なのでしょうか?
01991842005/11/06(日) 23:28:23ID:???
レスが遅くなってしまって申し訳ありませんでした。

皆さん色々なアドバイスどうもありがとうございました。
SEと相談し、結局SEが何かしら対策を考えるから今のまま作っていくことになりました。
色々アドバイスを頂いたのにもかかわらずこんな結果になってしまいましたが、
とりあえずはこのまま作っていきます。

本当にどうもありがとうございました。
0200nobodyさん2005/11/07(月) 20:19:05ID:???
>>199
いや、元々システムの設計としては間違ってないんだよ。
AcrobatReader 5.0の動き、ひいては
そんな微妙な動きをする時代遅れの古いバージョンを使い続ける…というのが良くない。
IEやOSのバージョンが上がってるんだからプラグインもバージョン上げていかないとねえ。

まぁガンガレ
0201nobodyさん2005/11/10(木) 16:34:58ID:l71/uwis
ASP.NETを使い始めたばかりで、今試行錯誤しながらテストしているのですが、HPを作る際に
画像を貼り付けたのですが、ftpでweb上にアップロードし、確認しようとしてみてみると
画像やコンボボックス等のオブジェクト類が一切表示されていません
ツールボックスのWEBフォームからオブジェクトを持ってきたのですが、HTMLのオブジェクトだと
表示されるようです。
.netによるデバック時は表示されているのですが、 web上だと表示されないのは何かが
足りないからかと思うのですが、わかりません。
漠然としていて申し訳ないですが、「これがないとダメポ」というのはありますか?
XMLファイルが無いのですが、これって関係ありますか?
0202nobodyさん2005/11/10(木) 18:10:20ID:???
【質問】ASP.NETスレ Part2【議論】
http://pc8.2ch.net/test/read.cgi/php/1111480331/
02032012005/11/10(木) 19:15:00ID:???
ありがとう。そっちに逝ってきます
02046682005/11/11(金) 11:39:15ID:CsKh1TLX
リストボックス内のすべての値をRequest.Formにて取得したいのですが、
現状セレクトされている値しか取得できません。
どうすれば、取得することができるのでしょうか?
0205nobodyさん2005/11/11(金) 19:54:32ID:???
>>204
Javascriptのテクニックになるのでスレ違いだが
submitする直前にselect のmultiselectをonにして
全optionをselectedにしてからsubmitすればいい。
02066682005/11/13(日) 11:23:37ID:GnU/8u4f
>>205
ありがとうございます。
やっとできました。
0207nobodyさん2005/11/17(木) 16:29:44ID:???
以下のbatファイルをASP化しようと思っています。

cmd /c net user vaio > I:\temp\test.txt

VBS化のソース↓
Dim WshShell
Dim rtnCode
Const SW_HIDE = 0
Set WshShell = CreateObject("Wscript.Shell")
rtnCode = WshShell.Run("cmd /c net user vaio > I:\temp\test.txt", SW_HIDE, True)
If rtnCode <> 0 Then Error rtnCode
というVBSは成功しました。
でもここからASPにできません。方法ってないですか?
0208nobodyさん2005/11/17(木) 19:58:09ID:???
<%@ Language=VBScript %>
<html>
<head>
</head>
<body>
<%
' 処理がとまってしまう
' DOSコマンドでも同様
Dim WSHShell
Set WSHShell = Server.CreateObject("WScript.Shell")
WSHShell.Run "notepad.exe", 3, false 'メモ帳を起動します。
' Microsoft VBScript 実行時エラー (0x800A01A8)<BR>オブジェクトがありません。: ''<BR>
'Dim WSHShell
'Set WSHShell = WScript.CreateObject("WScript.Shell")
'WSHShell.Run "notepad.exe" 'メモ帳を起動します。
' Microsoft VBScript 実行時エラー (0x800A0046) 書き込みできません。: 'MsgBox'になる
' MsgBox "メモ帳を起動しました。"
%>
</body>
</html>
02092082005/11/17(木) 19:58:44ID:???
考えられる原因は?
0210nobodyさん2005/11/17(木) 20:30:17ID:???
>>209の書き方がちょっとカチンとくるがヒントを出してやるか

>>207-208ともに
ASPのスクリプトがサーバ内でどういう権限で動作するかって所を考えよう

>>207はWMIを使うという選択肢もあるかも。
>>208は…そのページにアクセスするとサーバでメモ帳を立ち上げたいのか?
意味が分からん。
02112082005/11/17(木) 20:41:09ID:???
>>210

ありがとうっございます。
サーバ処理の概念がいまいちわかってないかもしれません。

WMIを検索して勉強してみます。
02122082005/11/17(木) 22:32:37ID:???
うーん。

ASPでCMD処理って敷居高いのかな。。。VBの時はすんなり出来たんだけど。

■ このスレッドは過去ログ倉庫に格納されています