首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Intranet应用程序中远程驱动文件的读取

问Intranet应用程序中远程驱动文件的读取
EN

Stack Overflow用户
提问于 2016-08-13 18:37:20
回答 1查看 899关注 0票数 0

我希望从与某些参数匹配的网络共享文件夹中读取pdfs的文件名,并提供一个链接,以便在我的模型的详细信息页上查看它们。我只需要弄到文件名。我现在不需要任何文件管理/读/写。

如果我有路径,我可以在浏览器中显示一个file://“(IE将打开”.pdf链接“)。我缺少的部分是在运行时从远程(但相同域)目录中获取文件名。

我们为应用程序设置了一个可以使用的虚拟目录,如果解析的物理文件夹位于同一台服务器上,这个目录过去可以正常工作,但这里的情况并非如此。

我尝试过模拟,但这似乎不起作用,因为我仍然获得一个访问被拒绝错误。

我意识到这可能是一个安全问题,也是不允许这样做的原因,但是是否有IIS配置或其他需要设置的方式来允许这种情况呢?我似乎找不到一种只打开读取目录的代码的方法。

示例代码,说明我通常如何从虚拟目录中的一个文件读取一些信息:

代码语言:javascript
复制
// 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

代码语言:javascript
复制
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);
}

如前所述,当物理文件夹位于同一台服务器上时,这些方法可以正常工作,但是一旦目录位于远程驱动器上,那么它就不再工作了。我有打开所需目录的权限,我的学院说他给了虚拟目录和服务器适当的权限。不知道在这一点上还能尝试什么。

编辑:现在它已经工作了,我使用虚拟目录显示文件

代码语言:javascript
复制
http://server/appName/virtualDirectory/pdfFileName
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-14 10:23:04

默认情况下,IIS应用程序池在名为IIS APPPOOL[NameOfYourAppPool]的特定本地Windows标识下运行。这是本地用户,因此不可能将权限授予此标识以访问位于另一台计算机上的资源。

如果两台服务器位于同一域中,则可以尝试以下解决方案:

  • 在域用户下运行IIS应用程序,并向此域用户授予所需的权限。
  • 在NetworkService标识下运行IIS应用程序,并向IIS服务器的域\MACHINENAME$帐户授予权限。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38935827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档