在.NET中进行URL重写的最简单方法

时间:2015-02-13 09:07:55

标签: c# .net asp.net-mvc .htaccess

我有一个我建立的博客。它在c#.NET中使用web api。

如果您点击此处:http://www.judsondesigns.com/api/blogapi/17

您将看到它从服务器返回一个条目。如何轻松地重写网址以使用博客标题而不是ID?

因此,您可以通过以下方式访问它:http://www.judsondesigns.com/api/blogapi/my_blog_tite_here

我在linux上用isapi重写了这个,但是在.NET中并不清楚如何。我听过不同的方式,但希望这里的方法越少越好。提前致谢。 -Judson

2 个答案:

答案 0 :(得分:3)

您要做的是创建自定义RouteBaseThis code review post是一个很好的起点。

它的主旨是:

public class MyRoute : RouteBase
{
    public override RouteData GetRouteData(HttpContextBase httpContext)
    {
        // parse url and turn into route
    }

    public override VirtualPathData GetVirtualPath(
        RequestContext requestContext,
        RouteValueDictionary values)
    {
        // create url from route
    }
}

然后您将其与任何其他路线一起注册,例如

routes.Add(new MyRoute());

答案 1 :(得分:1)

通过编辑路线配置:

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{blogTitle}",
            defaults: new { controller = "Home", action = "Index", blogTitle = UrlParameter.Optional }
        );
    }
}

或重写操作以使用名称而不是使用命名参数     http://www.judsondesigns.com/api/blogapi/?blogtitle=my_blog_tite_here