मेरे पास एल्माह के साथ एक एमवीसी 4 परियोजना है। मेरे Global.asax के Application_Start() हैएमवीसी 4 वेबएपीआई कॉन्फ़िगरेशन में किसी रूट को अनदेखा कैसे करें?
WebApiConfig.Register(GlobalConfiguration.Configuration); // #1
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes); // #2
# 1 और # 2 के रूप में
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional });
}
...
}
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
टेम्पलेट्स समान हैं और नियंत्रकों में मार्ग वास्तव में काम करता है एक URI कल्पना से हम यह चाहते हैं (इस प्रकार हैं परिप्रेक्ष्य)। मुद्दा यह है कि वेबएपीआई मार्ग जोड़े जाने के बाद अनदेखा मार्ग जोड़ा जाता है। इसलिए एमवीसी 4 एस द्वारा रूटिंग और एल्मा द्वारा नियंत्रित किया जाना चाहिए (उदाहरण के लिए /elmah.axd/styles
) को इसके बजाय वेबएपीआई द्वारा अवरुद्ध किया गया है और अनुरोध विफल रहता है => इसलिए मेरे elmah.axd पृष्ठों में कोई सीएसएस नहीं है। मैंने ग्लोबल.एक्सएक्स में # 1 और # 2 फिसलने की कोशिश की लेकिन इससे सभी वेबएपीआई रूटिंग विफल हो गईं - एफएआर सीएसएस से भी बदतर एल्मा में काम नहीं कर रहा है!
मुझे मूल रूप से पहले मार्ग के रूप में {resource}.axd/{*pathInfo}
को अनदेखा करने के लिए WebAPI के रूटिंग को निर्देशित करने के लिए कुछ तरीकों की आवश्यकता है - मैं यह कैसे कर सकता हूं?
आपका वेब एपीआई DefaultApi मार्ग अजीब लग: 'अन्यथा MVC और वेबएपीआई मार्गों का उल्लंघन करेगा" API/{नियंत्रक}/{कार्रवाई}/{आईडी} ",: यह' routeTemplate की तरह कुछ किया जाना चाहिए। क्या आपने नियमित नियंत्रक का परीक्षण किया है और एपीआई नियंत्रक आपके लिए काम कर रहे हैं? – nemesv
मैंने विशेष रूप से 'एपीआई' उपसर्ग को हटा दिया क्योंकि इससे हमारे प्रकाशित यूआरआई खराब हो जाएंगे। एमवीसी और वेबएपीआई नियंत्रक दोनों ठीक काम करते हैं - पहले वेबएपीआई नियंत्रकों की खोज की जाती है, फिर एमवीसी नियंत्रकों की खोज की जाती है (क्योंकि यह कॉन्फ़िगरेशन सेट करने का मेरा आदेश है) – DeepSpace101
config.Routes.IgnoreRoute ("{resource} .axd/{* pathInfo} "); WebApiConfig कक्षा में, विधि रजिस्टर करें। या तुमने कोशिश की? – Regfor