#asp.net #vb.net #path #directory #virtual
#asp.net #vb.net #путь #каталог #виртуальный
Вопрос:
В этом вопросе я использую Visual Studio 2008. Мой код довольно прост, поскольку он использовался по ссылке, которую я взял из Интернета. Я использую ASP / VB.Net, IIS6.0 в окне Windows Server 2003.
Я просмотрел различные источники в Интернете и не смог собрать правильный результат.
Цель этого — перечислить множество каталогов и соответствующих им файлов и позволить пользователю в конечном итоге управлять этим каталогом (например, открывать и удалять файлы).
Вот моя страница 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.
Вещи, которые я пробовал:
- На сервере я сопоставил диск и каталог.
- Разрешения, похоже, установлены правильно, олицетворение правильное.
- Если бы я должен был указать каталог в фактическом каталоге «C:InetpubDirectory «, нет никакого сбоя.
- Я понимаю, что это неполно для части списка каталогов, в ней будут перечислены только файлы (так что это нужно будет изменить.
- Я попытался создать виртуальный каталог, и приложение выдало ту же ошибку.
- На моем локальном компьютере для разработки у меня создан тот же путь — та же ошибка.
Как я могу просмотреть содержимое общего каталога и его файлы?
Комментарии:
1. forums.asp.net/t/785846.aspx/1
2. Удаленный сервер. MapPath, а затем изменил GetFile(«V:users «) в GetFile(» . «) и смог успешно извлечь файлы. Вторая часть вопроса, и я могу задать этот вопрос в новой теме, если требуется, заключается в том, как я могу изменить эту функциональность на список каталогов?
3.
For Each dir As DirectoryInfo In myDir.GetDirectories()
Ответ №1:
Здесь вы найдете ответ на вашу первую часть вопроса, почему сервер.MapPath не может (и не должен) использоваться для разрешения пути к общему сетевому ресурсу: http://forums.asp.net/t/785846.aspx/1
Второй вопрос, упомянутый в вашем комментарии, заключается в том, как перечислить все каталоги в каталоге:
myDir.GetDirectories()