3

ネットワークドライブで共有されているフォルダにたくさんのファイルがあります。これらのファイルにアクセスしてコードにアクセスしようとしています。しかし、それはエラーを与えています:

System.IO.DirectoryNotFoundExceptionがユーザーコードによって処理されませんでした

Fname = txtwbs.Text;
DirectoryInfo objDir = new DirectoryInfo("Y:\\");
_xmlpath = objDir + "\\" + Fname + "\\" + Fname + ".xml";
if (File.Exists(_xmlpath ))
{
    reader(_xmlpath);
}

私も使用しました:

file = fopen("\\\\10.0.2.20\\smartjobs\\Eto\\"+Fname);   

ローカルPCからファイルを読み取ることができますが、ネットワークロケーションに対してのみ例外が発生します。ネットワーク共有ロケーションからファイルを読み取る方法を教えてください。

また、フォルダのツリービューをAsp.netWebアプリケーションにするにはどうすればよいですか。

ディレクトリ構造はそのようなものです

\\10.0.2.20\Smartjobs\Eto\

これは親ディレクトリです。XMLドキュメントを含むフォルダの数を示しています。

4

3 に答える 3

1

asp.net では、匿名ユーザー アカウントで実行されているため、ネットワーク フォルダーに直接アクセスできません。そのアカウントにはその場所へのアクセス権がありません。

その共有場所の「全員」に権限を与えて、それが機能しているかどうかを確認できます。ただし、これはお勧めできません。

または、ネットワークの場所にアクセスするときに、asp.net コードで偽装を行う必要がある場合があります。その共有場所にアクセスできるユーザーと偽装する必要があります。

于 2012-05-21T12:10:40.013 に答える
1

共有ディレクトリをユーザーとしてマップした可能性がありますが、asp.net がプールのアカウントで実行されていることを忘れており、y:\ を共有ディレクトリに接続していません。

次にできることは、ネットワーク共有名を介して直接接続を試みることです。たとえば、次のようになります。\\SharedCom\fulldir\file.xml

于 2012-05-21T12:11:24.530 に答える
0

ファイルへのアクセス権を持つ特定のユーザーとして ASP.net ページを実行するように指定する必要があります。impersonation次に、ASP.net が実際にそのファイルにアクセスできるように、web.configファイルで有効にする必要がありますuser

Y ドライブは、マップされたネットワーク ドライブです。ネットワーク URL を使用する必要があります。\\server\Smartjobs\Eto\xyz.xml

他の場所から行うのと同じようnameに、でファイルの を指定します。network

Dim myStream As IO.FileStream = IO.File.Open("\\myserver\myshare\myfile", IO.FileMode.Open)
Dim myBytes As Byte()
myStream.Read(myBytes, 0, numberOfBytesToRead)

詳細参照: IIS 経由のネットワーク上のファイルを使用
して、共有ドライブを使用して ASP.NET ページのファイルまたはディレクトリの内容を一覧表示できない

于 2012-05-21T12:09:58.090 に答える