はじめに
クラシックASP(Active Server Pages)でIISが動作しているサーバとは別のサーバ上にファイルを作成する方法を調べたので、まとめてみました。
別サーバ(リモートサーバ)にファイルを作成する
- IISの動作しているWebサーバAとネットワークで繋がっているサーバBを用意する。
- サーバBに対して、WebサーバのIUSR_XXXと同じ名前、同じパスワードのユーザを作成する。IUSR_XXXのパスワードを調べるには、以下のエントリを参照してください。
- サーバBに共有ディレクトリを作成します。
- 共有ディレクトリに新しく作成したユーザの書き込み権を付加します。
- 以下のようなファイルを作成するスクリプトを実行します。
リモートサーバにファイルを作成するコード
<% Option Explicit %> <script language=vbscript runat=server> Call Main() Sub Main() On Error Resume Next Dim fso Dim tso Set fso = Server.CreateObject("Scripting.FileSystemObject") Set tso = fso.CreateTextFile("\\コンピュータ名\共有ディレクトリ\hoge.txt", true) If Err.Number <> 0 Then Call Response.Write(Err.Number & "<BR>") Call Response.Write(Err.Source & "<BR>") Call Response.Write(Err.Description & "<BR>") Response.End End If Call tso.WriteLine("hoge") If Err.Number <> 0 Then Call Response.Write(Err.Number & "<BR>") Call Response.Write(Err.Source & "<BR>") Call Response.Write(Err.Description & "<BR>") Response.End End If tso.Close() Set tso = Nothing Set fso = Nothing Call Response.Write("書き込み成功") End Sub
参考にしたサイト
ドメイン運用かワークグループ運用かによって手順が若干変わりますが、たとえば
ワークグループ運用であれば、Web サイトの実行アカウント(既定値は IUSR_pcname)と
同じ名前/パスワードのアカウントをファイルサーバー側に用意し、そのアカウント
(あるいは、そのアカウントが所属するグループ)に対して、 NTFS のアクセス許可を
与えておけば、FileSystemObject からは \\serverName\sharedName\folderName として
ファイルサーバー上のフォルダやファイルにアクセスすることができます。
Re[3]: 別サーバーへのフォルダの作成
注意事項
共有ディレクトリへのアクセスは、WindowsOSの同時接続数の制限を受けます。同時接続数が5ユーザに制限されている場合、同時に6人以上で同じディレクトリに書き込みを行った場合、どれか1つの端末はアクセス拒否のエラーとなります。
同時接続数は、以下の方法で調べることができます。
コントロールパネル→ライセンス