将已知的物理路径转换为虚拟路径

时间:2014-03-03 23:14:52

标签: c# asp.net

我想从磁盘上的已知位置获取文件,并让ASP从代码隐藏重定向到它们,允许浏览器/应用/设备控制内容的显示方式。

我尝试使用:

Server.Redirect(pathToFile);

但得到以下异常:子请求'C:\ ContentFolder \ testImage.png'的路径无效。预计会有虚拟路径。

如何允许我的网站将用户重定向到这些文件?我将基本目录存储在Web配置中,文件名存储在数据库中。

1 个答案:

答案 0 :(得分:2)

如果文件位于您的网站目录之外,则无法重定向到它们。如果可能,请考虑安全隐患。你有几个选择

  1. 将文件移动到网站目录(或其子目录)中。然后,可以使用虚拟路径将用户重定向到他们,例如Server.Redirect("~/files/somefile.zip")

  2. 在IIS中设置一个虚拟目录,该目录映射到磁盘上文件的物理位置。然后,您可以使用虚拟路径重定向到它们。你可以do this through the GUI or config file

  3. 创建一个HttpHandler,从磁盘加载文件并在响应中返回它们。您可以使用查询字符串来标识要加载的文件,例如/filehandler.ashx?filename=somefile.zip。快速谷歌透露this example