ASP.NET Web Api'deki yönlendirme taban sınıflarında küçük bir fark buldum ve bu da bana yollarımı tanımlamamı sağlayacak küçük bir yardımcı sınıf yazmam için zorladı Sadece bir kere. Bunun için bir sebep var mı? Bu beni tanır Ne çerçevesinde bir değişiklik hem RouteCollection
ler aynı temel sınıf türetmek yapmak veya (daha basit bu sınıfı yapmış olur) aynı arayüzASP.NET Web Api Yönlendirme (Kendi Kendine Barındırılan IIS)
public static class RouteMapper
{
private class Route
{
public string Name { get; set; }
public string Template { get; set; }
public object Defaults { get; set; }
public Route(string name, string template, object defaults)
{
Name = name;
Template = template;
Defaults = defaults;
}
}
private static List<Route> GetRoutes()
{
return new List<Route>
{
new Route(
"API Default",
"api/{controller}/{id}",
new {id = RouteParameter.Optional})
};
}
public static void AddHttpRoutes(this HttpRouteCollection routeCollection)
{
var routes = GetRoutes();
routes.ForEach(route => routeCollection.MapHttpRoute(route.Name, route.Template, route.Defaults));
}
public static void AddHttpRoutes(this RouteCollection routeCollection)
{
var routes = GetRoutes();
routes.ForEach(route => routeCollection.MapHttpRoute(route.Name, route.Template, route.Defaults));
}
}
uygulamak çok büyüktü varsayıyorum Bunu yapmak, hem Global.asax hem de tümleştirme testlerimde basit bir AddHttpRoutes
yöntemini çağırmaktır.
Entegrasyon
var configuration = new HttpSelfHostConfiguration("http://localhost:20000");
configuration.Routes.AddHttpRoutes();
_server = new HttpSelfHostServer(configuration);
_server.OpenAsync().Wait();
Global.asax
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.AddHttpRoutes();
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
bu bilinen bir sorun var mı ve ASP.NET Web Api sonraki bir sürümde düzeltilecektir muhtemeldir Testleri?
Harika bir örnek kod, tüm yönlendirme kodunu özgün RouteConfig.cs dosyasının içinde tutmak için biraz değiştirdim. – angularsen