无法使用共享驱动器在ASP.NET页面上列出文件或目录内容

时间:2011-10-27 20:52:37

标签: asp.net vb.net path directory virtual

在这个问题中我使用的是Visual Studio 2008.我的代码非常简单,因为它是从我从网上抓取的引用中使用的。我在Windows Server 2003的盒子上使用ASP / VB.Net,IIS6.0。

我在网上查看了各种来源,并且无法拼凑出正确的结果。

这样做的目的是列出一系列目录及其各自的文件,并允许用户最终管理该目录(例如打开和删除文件)。

这是我的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>

这是CodeBehind:

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. 我如何查看共享目录及其文件的内容?

1 个答案:

答案 0 :(得分:2)

在这里,您可以找到问题第一部分的答案,为什么Server.MapPath不能(也不应该)用于解析网络共享的路径:http://forums.asp.net/t/785846.aspx/1

评论中提到的第二个问题是如何列出目录中的所有目录:

myDir.GetDirectories()

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