4

手動でネットワーク ドライブY:// をシステムにマップしました。.Drive には多数のフォルダーがあり、それぞれに Same as Folder を持つ単一の XML ファイルが含まれています。

ここでは、ネットワークの場所から Xml ファイルを読み取ろうとしています。しかし、それは Exception Directory Not Foundを与えています。以下のコードはそのために使用しています。

                 Fname = txtwbs.Text;           
                 DirectoryInfo objDir = new DirectoryInfo("Y:\\");    

                 \\Y:\\
                 protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
                 {
                 _xmlpath = objDir + "\\" + Fname + "\\" + Fname + ".xml";           
                 if (File.Exists(_xmlpath ))           
                  {          
                   reader(_xmlpath);          
                  } 
                 }

ここで、Fname はフォルダ名であり、Xml 名でもあります。ユーザーが入力するファイル名は何でも構いません。

4

6 に答える 6

14

このコードを取得してください: http://pastebin.com/RZnydz4Z

次に、global.asax の Application_Start に次のように入力します。

protected void Application_Start(object sender, EventArgs e) 
{
    Utilities.Network.NetworkDrive nd = new Utilities.Network.NetworkDrive();        
    nd.MapNetworkDrive(@"\\server\path", "Z:", "myuser", "mypwd");
}

次に、次のように、通常のネットワーク ドライブのように使用します。

File.ReadAllText(@"Z:\myfile.txt");
于 2013-12-10T11:29:14.560 に答える
3

この投稿には、asp.netとasp-classicの両方のタグが付けられています。あなたのコード例から、asp-classicは当てはまらないと思います。

ASP.Netで実行している場合、システムは作成したマップされたドライブを認識しません。代わりにUNCパスを使用する必要があります。Windows認証を使用してサイトを実行していない場合は、匿名ユーザーが「アクセス拒否」エラーを受け取る可能性が高いため、共有にアクセスできる人になりすます必要があります。

最後に、DirectoryInfo呼び出しが必要だとは思いません-Path.Combine()を使用してください

于 2012-05-24T11:53:25.723 に答える
2

理想的には、UNC パスを使用してファイルにアクセスする必要があります。\\server\share\path\to\file

于 2012-05-24T11:47:33.080 に答える
1

アイデンティティのなりすましは私のためにトリックをしました

......

 <system.web>
<identity impersonate="true" userName="yourdomain\yourusername" 
    password="yourpassword" />
......
......
于 2013-01-29T15:24:44.543 に答える
0

ネットワークドライブではなくUNCパスを使用し、アプリケーションを実行しているユーザーがフォルダーとその内容にアクセスするためのアクセス許可を持っていることを確認してください。「ファイルが見つかりません」は、権限が間違っているか、パスが間違っている可能性があります。

于 2012-05-24T11:56:05.520 に答える
0

この API を使用します。http://www.codeproject.com/Articles/6847/Map-Network-Drive-API

コードでそれを行うことができた唯一の方法です。クラスを変更するだけで、プロジェクトに適合します。

于 2012-05-24T11:45:10.940 に答える