【问题标题】:Unable to access images stored inside my App_Data folder无法访问存储在我的 App_Data 文件夹中的图像
【发布时间】:2013-11-24 13:12:23
【问题描述】:

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

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

但是当我点击这个链接时,我得到了以下错误:

HTTP 错误 404.8 - 未找到

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

那么是什么导致了这个问题,我该如何解决呢?

谢谢

【问题讨论】:

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


【解决方案1】:

创建流式传输图像的控制器(例如“Streamer”)和操作(例如“StreamUploadedImage”)(操作通常会返回 FileResult)。

更改 url 以引用您的操作,将图像 id 作为参数传递,例如(根据记忆,语法可能不准确):

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

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

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

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

【讨论】:

    【解决方案2】:

    路径被您的 IIS 阻止。要解决此问题,请将文件移动到其他位置(也许是“~/Uploads/Images/”?)。

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

    欲了解更多信息:http://www.iis.net/configreference/system.webserver/security/requestfiltering/hiddensegments

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-27
      • 2018-03-28
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      • 2013-11-04
      相关资源
      最近更新 更多