मुझे एएसपी.नेट वेब एपीआई में रूटिंग बेस क्लास में मामूली अंतर मिला है जिसने मुझे थोड़ा सहायक वर्ग लिखने के लिए मजबूर किया है जो मुझे मेरे मार्गों को परिभाषित करने की अनुमति देगा सिर्फ एक बार। क्या इसका कोई कारण है? मैं यह सोचते हैं रहा हूँ यह बहुत बड़ी ढांचे में कोई परिवर्तन दोनों RouteCollection
रों एक ही आधार वर्ग से निकाले जाते हैं कर सकते हैं या एक ही इंटरफ़ेस (जो इस वर्ग के बहुत सरल बना सकता था)एएसपी.नेट वेब एपी रूटिंग (आईआईएस बनाम स्वयं होस्टेड)
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));
}
}
लागू करने के लिए था क्या यह मेरे लिए अनुमति देता है करने के लिए मेरे Global.asax और मेरे एकीकरण परीक्षण दोनों में एक सरल AddHttpRoutes
विधि को कॉल करना है।
एकता टेस्ट
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 }
);
}
यह एक ज्ञात समस्या है और यह ASP.NET वेब एपीआई के बाद के रिलीज में तय होने की संभावना है?
ग्रेट उदाहरण कोड, मैंने मूल रूटिंग Config.cs फ़ाइल के अंदर सभी रूटिंग कोड रखने के लिए इसे थोड़ा संशोधित किया। – angularsen