ASP.NET从服务器获取文件列表

use*_*331 7 c# asp.net asp.net-mvc

我试图通过ASP.NET从服务器获取文件列表.我有这个代码,它从我的计算机上的文件夹中获取文件列表,现在我要做的是从实际服务器获取文件,我已经搜索过这个,但发现一切都非常复杂.如果有人可以帮助我或指出我想要做的方向,那将是伟大的.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.IO;
using FTPProject.Models;

namespace FTPProject.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ViewBag.Title = "Home Page";
            var uploadedFiles = new List<UploadedFile>();

            var files = Directory.GetFiles(Server.MapPath("~/UploadedFiles"));

            foreach (var file in files)
            {
                var fileInfo = new FileInfo(file);

                var uploadedFile = new UploadedFile() { Name = Path.GetFileName(file) };
                uploadedFile.Size = fileInfo.Length;

                uploadedFile.Path = ("~/UploadedFiles/") + Path.GetFileName(file);
                uploadedFiles.Add(uploadedFile);
            }

            return View(uploadedFiles);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

UPDATE

我尝试过以下方法:

在我的Web.Config中:

补充一下:

<appSettings>
    <add key="myPath" value="D:\Folder\PDF" />
  </appSettings>
Run Code Online (Sandbox Code Playgroud)

并在控制器中更改了此项:

var myPath = WebConfigurationManager.AppSettings["myPath"];

var files = Directory.GetFiles(Server.MapPath(myPath));
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,我收到此错误:

System.Web.dll中出现"System.Web.HttpException"类型的异常,但未在用户代码中处理

附加信息:'D:\ Folder\PDF'是物理路径,但预计会有虚拟路径.

注意:我的应用程序与D:\不在同一台服务器上,但我需要从D:\获取文件列表

mas*_*son 14

Server.MapPath采取虚拟路径,例如:~/Folder/file.ext.所以你不能传递像D:\Folder\PDF它这样的物理路径.

访问远程文件系统的语法不同,您需要UNC文件路径.在您的配置文件中,myPath应该是\\servername\d$\Folder\PDF,并且您不需要任何调用,Server.MapPath并且您的站点进程正在运行的用户应该是您正在访问的服务器上的管理员.

或者您可以专门共享文件夹并授予您的Web服务器运行的帐户的权限,然后您不需要管理员权限(这更安全).然后UNC路径就像\\servername\sharename.