1

我正在使用 ASP.NET 4 Web 表单路由,例如这样:

routes.MapPageRoute("page-browse", "{Language}/{Label}", "~/Default.aspx")

所以网络地址可能看起来像:http://localhost/mywebsite/eng/home

在我网站的根目录中,我有一个文件夹“图像”。

当我在我的网站的根目录中时,图像显示工作,例如通过使用http://localhost/mywebsite/default.aspx

但是当使用路由时它不起作用,因为图像相对 url 将查看http://localhost/mywebsite/eng/images而不是http://localhost/mywebsite/images

有没有办法使用 ASP.NET 4 路由机制来防止这种情况?或者是对图像使用绝对网址的唯一方法?

4

3 回答 3

5

你可以尝试两件事。

1) 将 RouteExistingFiles 设置为 false。这将停止对服务器匹配为已存在的任何文件的路由。只有匹配路由的“虚拟”url才会被实际路由:

routes.RouteExistingFiles = false;

2)使用StopRoutingHandler路线。例如,这将停止所有 jpg 的路由。您也可以将其设置为忽略整个图像目录。

routes.Add(new Route("*\.jpg", new StopRoutingHandler()));
于 2011-03-02T16:35:47.063 回答
1
  1. 创建一个IHttpHandler实现,从虚拟路径中定位文件的绝对路径并将其呈现为文件流。

  2. 创建一个IRouteHandler实现,如果文件具有图像扩展名,则返回我刚刚描述的 http 处理程序,否则使用默认路由机制。

  3. 注册要在路由中使用的路由处理程序。

于 2011-03-05T18:59:17.947 回答
0

你是如何引用你的图像的?您应该只能使用“/”前缀来使用站点根目录的虚拟路径(除非我完全误解了这个问题)

例如

<img src="/mywebsite/images/image.jpg" />
于 2010-07-09T15:36:49.590 回答