2011-10-27 13 views
0

この質問ではVisual Studio 2008を使用しています。私はWindows Server 2003のボックスでASP/VB.Net、IIS6.0を使用しています。共有ドライブを使用してASP.NETページのファイルまたはディレクトリの内容を表示できません

私は様々な情報源をオンラインで見てきましたが、適切な結果をまとめることはできませんでした。

この目的は、多数のディレクトリとそれぞれのファイルをリストし、最終的にそのディレクトリ(ファイルのオープンや削除など)を管理できるようにすることです。ここで

は私のASPXページです:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="DirectoryList.aspx.vb" Inherits="VCMReports.DirectoryList" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title>Untitled Page</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
    <asp:DataGrid runat="server" id="articleList" Font-Name="Verdana" 
    AutoGenerateColumns="False" AlternatingItemStyle-BackColor="#eeeeee" 
    HeaderStyle-BackColor="Navy" HeaderStyle-ForeColor="White" 
    HeaderStyle-Font-Size="15pt" HeaderStyle-Font-Bold="True"> 
    <Columns> 
    <asp:HyperLinkColumn DataNavigateUrlField="Name" DataTextField="Name" 
      HeaderText="File Name" /> 
    <asp:BoundColumn DataField="LastWriteTime" HeaderText="Last Write Time" 
     ItemStyle-HorizontalAlign="Center" DataFormatString="{0:d}" /> 
    <asp:BoundColumn DataField="Length" HeaderText="File Size" 
     ItemStyle-HorizontalAlign="Right" 
     DataFormatString="{0:#,### bytes}" /> 
    </Columns> 
</asp:DataGrid> 

    </div> 
    </form> 
</body> 
</html> 

そして、ここでは、分離コードです:

Imports System.IO 
Imports System.IO.DirectoryInfo 

Partial Public Class DirectoryList 
    Inherits System.Web.UI.Page 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     Dim dirInfo As New DirectoryInfo(Server.MapPath("V:\Users\")) 

     articleList.DataSource = dirInfo.GetFiles("V:\Users\") 
     articleList.DataBind() 

    End Sub 
    Protected Sub GetFiles() 

     Dim files() As String = Directory.GetFiles("V:\Users\") 

     Dim myDir As DirectoryInfo = New DirectoryInfo("V:\Users\") 
     Dim fileInfos() As IO.FileInfo = myDir.GetFiles("*.*") 
    End Sub 

ページを起動すると、次のエラーが表示されます:私が持っている

'V:\Users\' is not a valid virtual path. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Web.HttpException: 'V:\Users\' is not a valid virtual path. 

物事を試しました:

  1. サーバー上で、ドライブとディレクトリをマップしました。
  2. 権限が正しく設定されているようですが、偽装は正しいです。
  3. 実際のディレクトリ "C:\ Inetpub \ Directory \"にディレクトリをリストする場合、失敗はありません。
  4. 私は、これは一部のディレクトリ一覧のため不完全であることを理解します、これはだけなので、これは変更する必要があります(ファイルがリストされます。
  5. 私は仮想ディレクトリを作成しようとしました、そしてアプリケーションが同じエラーを提示した。
  6. 私の地元の開発マシン上で
  7. 、私が作成したのと同じパスを持っている - 。同じエラーを

どのように私は、共有ディレクトリの内容を表示することができるよ、それはあなたが答えを見つけるのファイルここで

+2

http://forums.asp.net/t/785846.aspx/1 –

+0

Server.MapPathを削除してGetFile( "V:\ users \")をGetFile( "*。*")に変更し、正常にファイルを取得します。 質問の2番目の部分ですが、必要に応じてこれを新しいスレッドで尋ねることができますが、この機能をディレクトリのリストに変更するにはどうすればよいですか? – RogueSpear00

+0

'各ディレクトリに対してDirectoryInfoとしてmyDir.GetDirectories()' –

答えて

2

ですか?質問の最初の部分、なぜServer.MapPathは(とはなりません)ネットワーク共有へのパスを解決するために使用することはできません。http://forums.asp.net/t/785846.aspx/1

あなたのコメントで述べた2つ目の質問は、ディレクトリ内のすべてのディレクトリを一覧表示する方法である:

myDir.GetDirectories() 

http://msdn.microsoft.com/en-us/library/s7xk2b58.aspx

+0

ありがとう@TimSchmelter – RogueSpear00

関連する問題