我希望从与某些参数匹配的网络共享文件夹中读取pdfs的文件名,并提供一个链接,以便在我的模型的详细信息页上查看它们。我只需要弄到文件名。我现在不需要任何文件管理/读/写。
如果我有路径,我可以在浏览器中显示一个file://“(IE将打开”.pdf链接“)。我缺少的部分是在运行时从远程(但相同域)目录中获取文件名。
我们为应用程序设置了一个可以使用的虚拟目录,如果解析的物理文件夹位于同一台服务器上,这个目录过去可以正常工作,但这里的情况并非如此。
我尝试过模拟,但这似乎不起作用,因为我仍然获得一个访问被拒绝错误。
我意识到这可能是一个安全问题,也是不允许这样做的原因,但是是否有IIS配置或其他需要设置的方式来允许这种情况呢?我似乎找不到一种只打开读取目录的代码的方法。
示例代码,说明我通常如何从虚拟目录中的一个文件读取一些信息:
// This example code is inside a controller action, so Server refers to HttpContextBase
var path = Server.MapPath("~/MyVirtualDirectory/" + fileName);
var fileExists = System.IO.File.Exists(path);
var fileLastModified = System.IO.File.LastWriteTime(path);为了枚举目录中匹配的文件,我使用了DirectoryInfo
var pdfFileNames = new List<string>();
var dir = new DirectoryInfo(Server.MapPath("~/VirtualDirectory/"));
var pdfs = dir.EnumerateFiles("*.pdf");
foreach (var pdf in pdfs)
{
pdfFileNames.Add(pdf.Name);
}如前所述,当物理文件夹位于同一台服务器上时,这些方法可以正常工作,但是一旦目录位于远程驱动器上,那么它就不再工作了。我有打开所需目录的权限,我的学院说他给了虚拟目录和服务器适当的权限。不知道在这一点上还能尝试什么。
编辑:现在它已经工作了,我使用虚拟目录显示文件
http://server/appName/virtualDirectory/pdfFileName发布于 2016-08-14 10:23:04
默认情况下,IIS应用程序池在名为IIS APPPOOL[NameOfYourAppPool]的特定本地Windows标识下运行。这是本地用户,因此不可能将权限授予此标识以访问位于另一台计算机上的资源。
如果两台服务器位于同一域中,则可以尝试以下解决方案:
https://stackoverflow.com/questions/38935827
复制相似问题