2

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

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

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

HTTP 错误 404.8 - 未找到

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

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

谢谢

4

2 回答 2

5

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

更改 url 以引用您的操作,将图像 id 作为参数传递,例如(从内存中,因此语法可能不准确):

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

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

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

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

于 2013-11-12T11:58:36.760 回答
1

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

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

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

于 2013-11-12T11:54:39.587 回答