无法访问存储在App_Data文件夹中的图像

时间:2013-11-12 11:46:34

标签: c# asp.net asp.net-mvc-4 iis-7

我的asp.net mvc web应用程序中有以下链接: -

<a href="~/App_Data/uploads/38.png">@Model.Name</a>

但是当我点击此链接时,我收到以下错误:

  

HTTP错误404.8 - 未找到

     

请求过滤模块配置为拒绝URL中包含hiddenSegment部分的路径。

那么是什么导致了这个问题,以及我如何解决它?

由于

2 个答案:

答案 0 :(得分:5)

创建一个流式传输图像的Controller(例如“Streamer”)和Action(例如“StreamUploadedImage”)(Action通常会返回一个FileResult)。

更改网址以引用您的操作,将图片ID作为参数传递,例如(从内存中所以语法可能不准确):

@Html.ActionLink(Model.Name, "StreamUploadedImage", "Streamer", new {id = "38" })

另一种方法是将上传的图像放在可以从客户端访问的位置,例如,在Content文件夹的子文件夹中:

<a href="~/Content/uploads/38.png">@Model.Name</a>

但是使用控制器可以让您获得更多控制权,例如实施授权。

答案 1 :(得分:1)

您的IIS阻止了该路径。要解决,请将文件移动到其他位置(“〜/ Uploads / Images /”或许?)。

IIS阻止某些文件夹的原因是因为它们可能包含用户无权访问的重要数据或文件。为了避免黑客获取此信息,IIS拒绝访问这些文件夹中的任何文件。

有关详细信息:http://www.iis.net/configreference/system.webserver/security/requestfiltering/hiddensegments