首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >asp.net mvc 2.0 :将请求路由到静态资源

asp.net mvc 2.0 :将请求路由到静态资源
EN

Stack Overflow用户
提问于 2011-01-17 18:36:49
回答 1查看 1.3K关注 0票数 3

我不想将HTTP请求路由到操作,而是将其路由到文件。

重要:i确实有一个使用IIS7.0URL重写模块的工作解决方案,但是对于在家里进行调试(没有IIS7.0),我不能使用重写。

特殊情况

我希望将包含/images/的任何URL指向~/images/文件夹。

示例:

代码语言:javascript
复制
http://wowreforge.com/images/a.png -> /images/a.png
http://wowreforge.com/Emerald Dream/Jizi/images/a.png -> /images/a.png
http://wowreforge.com/US/Emerald Dream/Jizi/images/a.png -> /images/a.png
http://wowreforge.com/characters/view/images/a.png -> /images/a.png

这个问题源于一个事实,即页面"view_character.aspx“可以从多个URL到达:

代码语言:javascript
复制
http://wowreforge.com/?name=jizi&reaml=Emerald Dream
http://wowreforge.com/US/Emerald Dream/Jizi

Context IIS7.0(集成模式),ASP.NET MVC 2.0

额外学分问题

在这种情况下使用MVC路由(而不是URL rewriting?

  • What处理程序)是不是一个坏主意IIS7.0将请求路由到物理文件?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-17 18:43:27

您可能应该重写到图片的链接到。

代码语言:javascript
复制
<img src="<%= ResolveUrl("~/images/a.png") %>" />

这样你就不需要让你的路线来处理图像了。

更新将如何通过路由将此条目添加到RouteTable中

代码语言:javascript
复制
routes.Add("images", new Route("{*path}", null, 
   new RouteValueDictionary(new { path = ".*/images/.*"}), 
   new ImageRouteHandler()));

现在您需要创建一个ImageRouteHandler和一个ImageHandler

代码语言:javascript
复制
public class ImageRouteHandler : IRouteHandler
{
    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        //you'll need to figure out how to get the physical path
        return new ImageHandler(/* get physical path */);
    }
}

public class ImageHandler : IHttpHandler
{
    public string PhysicalPath { get; set; }

    public ImageHandler(string physicalPath)
    {
        PhysicalPath = physicalPath;
    }

    public void ProcessRequest(HttpContext context)
    {
        context.Response.TransmitFile(PhysicalPath);
    }

    public bool IsReusable
    {
        get { return true; }
    }
}

这也不做任何缓存。您可以在Reflector中签出System.Web.StaticFileHandler,用于处理Asp.Net应用程序的静态文件,以获得更完整的实现。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4716574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档