【问题标题】:IIS VirtualDirectories, and accessing their contents from a ASP.NET MVC ProjectIIS 虚拟目录,并从 ASP.NET MVC 项目访问其内容
【发布时间】:2021-08-19 23:14:13
【问题描述】:

由于 Chromium 不再允许指向本地文件的链接,我正在尝试测试几个解决方案,以允许用户在本地网络共享上打开 PDF,而无需先下载它们(当前的解决方法)。

我测试了一个纯 JavaScript 解决方案,效果很好。

但是,我尝试在 IIS 中使用虚拟目录,该目录指向包含用户可以访问的文件的网络共享。

在测试并尝试导航到我保存的文件时,我收到“找不到路径错误”

我创建了一个测试应用程序并将其发布到我的本地计算机上。

下面是我创建的虚拟目录的屏幕截图。


**下面**是我用来尝试打开文件的代码。
[HttpPost]
        public ActionResult OpenPDF()
        {

            string directory = "./pdf";
            string file = "/light.pdf";
            byte[] fileBytes = System.IO.File.ReadAllBytes(directory + file);

            return File(fileBytes, "application/pdf");
        }

我假设虚拟目录位于根目录中。我试图找到一些在代码中访问虚拟目录的示例,但我没有找到。

我访问的资源:
https://docs.microsoft.com/en-us/iis/configuration/system.applicationhost/sites/site/application/virtualdirectory

https://docs.microsoft.com/en-us/troubleshoot/windows-server/networking/create-virtual-directory-folder-remote-computer#:~:text=In%20the%20Internet%20Information%20Services,and%20then%20click%20Virtual%20Directory.

Virtual Directory to navigate to http://localhost/MyWebsite instead of http://localhost:8080

Different between ./ , ../ , ../../ , ~/ on file path(URL) in asp.net

https://www.c-sharpcorner.com/UploadFile/francissvk/create-virtual-directory-in-iis/

我们将不胜感激任何和所有的帮助,谢谢。

【问题讨论】:

标签: c# asp.net-mvc iis filesystems virtual-directory


【解决方案1】:

在 ASP.NET Core 中,您可以返回 VirtualFileResult

一个 FileResult,它在执行时使用主机提供的机制将使用虚拟路径指定的文件写入响应。

或者您可以通过Server.MapPath("~/pdf/light.pdf") 获取虚拟路径。

返回与指定虚拟路径对应的物理文件路径。

在您的示例代码中,您可以这样使用它:

[HttpPost]
public ActionResult OpenPDF()
{

    string directory = "/pdf"; // notice I removed the . 
    string file = "/light.pdf";
    var filepath = Server.MapPath("~" + directory + file);
    byte[] fileBytes = System.IO.File.ReadAllBytes(filepath);

    return File(fileBytes, "application/pdf");
}

请记住,如果要访问网络共享,您的应用程序池需要以有权访问所述网络共享的身份运行。

要在新选项卡中下载文件,请尝试在客户端 html 中使用 <a href="/file.pdf" target="_blank">file</a>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    相关资源
    最近更新 更多