2015-02-13 3 views
1

У меня есть блог, который я создал. Он использует веб-api в C# .NET.Самый простой способ переписать URL в .NET

Если нажать здесь: http://www.judsondesigns.com/api/blogapi/17

Вы увидите, что он возвращает запись с сервера. Как я могу легко переписать URL-адрес, чтобы использовать заголовок блога вместо ID?

Так вместо этого вы можете получить доступ к нему через: http://www.judsondesigns.com/api/blogapi/my_blog_tite_here

Я сделал это с ISAPI переписывает в прошлом на Linux, но не было ясно, как в .NET. Я слышал по-другому, но хотелось бы, чтобы в этом было меньше возможностей. Заранее спасибо. -Judson

ответ

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

+0

Великого ответ, но следует отметить, что маршрутизация отличается (лучше), чем фактическая [URL rewriting] (http://weblogs.asp.net/scottgu/tip-trick-url-rewriting-with-asp-net). – NightOwl888

+0

Почему это лучше, чем использование параметров веб-конфигурации, которые я видел после добавления пакетов. –

3

То, что вы хотите сделать, это создать собственный RouteBase. This 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()); 
+2

Отличный ответ, но следует отметить, что маршрутизация отличается (лучше), чем фактическая [переписывание URL] (http://weblogs.asp.net/scottgu/tip-trick-url-rewriting-with-asp-net). – NightOwl888

Смежные вопросы