- PR -

Aspを使って、異なるサーバ間でファイルのコピーをしたい

1
投稿者投稿内容
Hymm
会議室デビュー日: 2005/03/30
投稿数: 14
投稿日時: 2005-04-11 18:07
Aサーバ、Bサーバがあり、IISはAサーバに立てています。
両方のサーバのディレクトリを仮想ディレクトリに割り当てて、
Aサーバ上、またはBサーバ上でファイルのコピーは

filename = Server.MapPath("コピー元.txt")
filename2 = Server.MapPath("コピー先.txt")
Set fs = CreateObject("Scripting.FileSystemObject")
w = fs.CopyFile(filename,filename2,True)

とするとAサーバでもBサーバでも正しくコピーできます。
しかし、

filename = Server.MapPath("コピー元.txt")
filename2 = "\\Bサーバ名\DATA\コピー先.txt"
Set fs = CreateObject("Scripting.FileSystemObject")
w = fs.CopyFile(filename,filename2,True)

等と記述した場合、
>Microsoft VBScript 実行時エラー エラー '800a0046'
>書き込みできません。
とエラーが出てしまいます。

この回避方法、または設定について教えていただけませんでしょうか?
よろしくお願いいたします。
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2005-04-11 18:12
引用:

filename2 = "\Bサーバ名DATAコピー先.txt"
>Microsoft VBScript 実行時エラー エラー '800a0046'


書き込む権限が無いようですよ。

_________________
たつごろー
codeseek
こみゅぷらす
Mattun
ぬし
会議室デビュー日: 2004/08/10
投稿数: 1391
投稿日時: 2005-04-11 18:46
そのASPスクリプトを置いているサイト/ディレクトリに対する、
IISでの認証方式はどうなってますか?
匿名認証を許可しているなら、匿名認証に使ってるアカウントで、
基本認証やWindows統合認証を行ってるなら、認証に使ったアカウントで、
それぞれASPが実行され、ファイルの書き込みが行われます。

あとはファイル書き込みを行うマシンにて、
そのIISで使ってるユーザと同一名/同一パスワードのユーザが
書き込みする権限を持っていれば書き込みが可能です。

そのスクリプトを動かせるユーザを限定するのか否か、によって、
匿名認証を無効にして書き込み権限持つユーザで認証させるようにするか、
匿名認証有効にしたまま匿名ユーザで書き込みできるようにするか、
ってのを決める感じです。
Hymm
会議室デビュー日: 2005/03/30
投稿数: 14
投稿日時: 2005-04-13 09:24
Mattun様>

Aサーバ、Bサーバともに、
引用:

そのASPスクリプトを置いているサイト/ディレクトリに対する、
IISでの認証方式はどうなってますか?


「匿名アクセスを有効にする」:OFF
「統合Windows認証」:ON
にしてますので、WindowsのログインIDで認証を行っているはずです。

引用:

あとはファイル書き込みを行うマシンにて、
そのIISで使ってるユーザと同一名/同一パスワードのユーザが
書き込みする権限を持っていれば書き込みが可能です。


IISで使っているユーザは「統合Windows認証」です。
・このユーザは、「同一名/同一パスワード」のユーザで「書き込みする権限」を持っています。
従って、書き込めない理由が分かりません。

現に、Aサーバの仮想ディレクトリ(またはBサーバの仮想ディレクトリ上)内で、複製を作ることが可能です。
但し、AサーバからBサーバにコピーする際に書き込みエラーが出てしまいます。

この際、AサーバからBサーバへコピーしにいこうとしているユーザは「統合Windows認証」のユーザではないということなのでしょうか?
一体どのユーザなのか検討がつきません。
Mattun
ぬし
会議室デビュー日: 2004/08/10
投稿数: 1391
投稿日時: 2005-04-13 09:47
引用:

この際、AサーバからBサーバへコピーしにいこうとしているユーザは「統合Windows認証」のユーザではないということなのでしょうか?
一体どのユーザなのか検討がつきません。


そこまでわかってるなら、Bサーバのディレクトリ上で、ファイルアクセスの監査設定を
行えば絞り込めるでしょう。
Hymm
会議室デビュー日: 2005/03/30
投稿数: 14
投稿日時: 2005-04-14 13:39
Aサーバの仮想ディレクトリ設定の「リソースのコンテンツのある場所」を
「このコンピュータにあるディレクトリ」にしてテストしていたのですが、
「他のコンピュータにある共通ディレクトリ」にして、Aサーバのディレクトリを指定することによって、「ネットワークディレクトリのセキュリティ資格情報」でユーザとパスワードを聞いてきますから、そこでA,Bサーバ共に読み取り書き込み出来るユーザを指定することにより、
A,Bサーバ間の通信が出来るようになりました。

しかし、Aサーバの「リソースのコンテンツのある場所」は「このコンピュータにあるディレクトリ」なのに、「他のコンピュータにある共通ディレクトリ」にしなくてはならないことが、まずおかしい点です。
この問題を「このコンピュータにあるディレクトリ」にしたまま回避する方法は無いでしょうか?

もっと言えば、「統合Windows認証」方式を取っていますから、使用ユーザ(WindowsログオンID)がBサーバへのAccess権を持っていれば、書き込めるようにしたいのですが、無理でしょうか。

[ メッセージ編集済み 編集者: Hymm 編集日時 2005-04-14 14:19 ]
You
会議室デビュー日: 2005/05/19
投稿数: 3
投稿日時: 2005-05-19 17:11
全然見当違いの意見かもですが・・・

BサーバとAサーバに共通のユーザー(ASP用)を作成。
アプリケーションプールのプロパティ上の「識別」にて明示的に上記ユーザーとパスワードを指定。
同様にWebサイトプロパティの認証情報も明示的に指定。

という話でしょうか。
通常のファイルIOと同じくWebアプリケーションが今どのユーザー権限で動作しているのかを意識すればできると思います。たぶん。

全く違う話だったらごめんなさい。
1

スキルアップ/キャリアアップ(JOB@IT)