- PR -

WEBサービス側での「File.Exists」によるファイル存在確認について

投稿者投稿内容
まわ
常連さん
会議室デビュー日: 2006/03/09
投稿数: 43
投稿日時: 2006-03-09 10:34
はじめまして、まわといいます。宜しくお願い致します。
VS.NET2003 言語C#
WEBサービス側での「File.Exists」によるファイル存在確認について
悩んでいます。

@クライアントから要求を投げる。

AAPサーバー側でDBサーバーより「ファイルのフルパス」を
 取得し、その値を元に存在確認する。
(存在確認したいフォルダはAPサーバーには存在せず、他のサーバーにあります。
DBから取得するパスは「サーバー名+フルパス」と「ネットワークドライブ+フルパス」で試しました。)

Bクライアントに処理を返す。

という流れの処理を行いたいのですが
クライアント側で結果を確認するとFALSEで返されてしまいます。
「A」に記載してある取得パスをAPサーバー内の適当なファイルのパスに書き換えて
試すと正常に存在確認でき、Trueを返します。

また、クライアントを切り離してAPサーバー(サービス側)だけでテストを行った場合、APサーバー外のファイルでも
「サーバー名+フルパス」と
「ネットワークドライブ+フルパス」
を使って存在確認することができました。

クライアントに処理を戻す際、サービス側で取得したフルパスを返すように
作ったのですが、値は取得できていました。

なにが原因なのか調べているのですが、分かりません。
どうか、宜しくお願い致します。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-09 10:47
引用:

まわさんの書き込み (2006-03-09 10:34) より:

「2」に記載してある取得パスをAPサーバー内の適当なファイルのパスに書き換えて
試すと正常に存在確認でき、Trueを返します。


これは DB サーバ経由で取得して試されたのでしょうか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
まわ
常連さん
会議室デビュー日: 2006/03/09
投稿数: 43
投稿日時: 2006-03-09 11:03
じゃんぬねっとさん

お返事ありがとう御座います。

すみません。環境の記載に間違えがありました。
WEBサービスが見ているDBは同じサーバー内に存在しています。

「クライアント側」---「サービス側・DB」---「ファイルが存在するPC」

という構成です。

■「2」に記載してある取得パスをAPサーバー内の適当なファイルのパス■
に関してはテーブルの値を書き変えて取得し試しました。
DB経由ということになりますでしょうか。

宜しくお願い致します。

xxななおxx
ベテラン
会議室デビュー日: 2005/01/18
投稿数: 61
お住まい・勤務地: 東京(練馬)
投稿日時: 2006-03-09 13:32
見当違いでしたら済みません。

投稿内容から、
WebサービスのWebメソッドをコールしたクライアントの結果がFALSEと言うように読めますが?

Webサービス内のソースコードに記述したFile.Exists()メソッドの戻り値がFALSEか確認しましたか?

もし確認してないなら確認してみてください。

私の似たような経験上からは、File.Exists()で例外が発生して
自分で組みこんだエラートラップで(FALSE)となるケースはありました。

この原因は、ファイルの存在するフォルダにASPNETユーザーのアクセス権限が無かったためでした。そのフォルダに権限を追加し解決したことはあります。

まわ
常連さん
会議室デビュー日: 2006/03/09
投稿数: 43
投稿日時: 2006-03-09 14:01
xxななおxxさん>
お返事ありがとう御座います。

//JOBの存在を確認する
if (File.Exists(jobFile))
{
   boolReturn = true;
}
else
{
   jobName = jobFile; //これをクライアントに正常に返しているのでelseには入っ              てると思います。
   boolReturn = false;    
}

Return( boolReturn );

と行っているため、File.Exists()の判定を拾えていると思います。

ユーザー権限の付加を今から試してみます!ありがとう御座います!
まわ
常連さん
会議室デビュー日: 2006/03/09
投稿数: 43
投稿日時: 2006-03-09 15:05
対象ファイルが存在するPCに
.NETFrameWork1.1をインストールして
ASPNETユーザーを追加致しましたが、駄目でした。

ASPNETユーザーとは、対象ファイルが存在するPCのローカルユーザーで
正しいのでしょうか。
本当に知識が無くて申し訳御座いませんが、ご教授お願い致します。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-03-09 15:20
引用:

対象ファイルが存在するPCに
.NETFrameWork1.1をインストールして
ASPNETユーザーを追加致しましたが、駄目でした。


いや、駄目でしょう。
どのマシンのどのユーザーに権限を与えるのかよく考えてみてください。

たまたま同じ名前の別マシンのユーザーはもちろん別ユーザーです。
_________________
囚人のジレンマな日々
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-03-09 15:41
引用:

WEBサービス側での「File.Exists」によるファイル存在確認について
悩んでいます。



何がしたくてどこでひっかかっているのかよく分かりません。

「どこにあるファイル」の存在を「どこで動いているプログラム」で検出したいのでしょうか?

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/

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