मुझे इस तथ्य से प्यार है कि ASP.NET Core के MVC6 ने दो पैटर्न को एक में मिला दिया क्योंकि मुझे अक्सर दोनों दुनियाओं का समर्थन करने की आवश्यकता होती है। हालांकि यह सच है कि आप किसी भी मानक MVC Controller(और / या अपनी खुद की ActionResultकक्षाएं विकसित कर सकते हैं) को अभिनय और व्यवहार ApiControllerकर सकते हैं एक की तरह , इसे बनाए रखना और परीक्षण करना बहुत कठिन हो सकता है: उस के शीर्ष पर, नियंत्रकों के तरीकों में ActionResultदूसरों के साथ मिश्रित होना IHttpActionResultयदि आप अकेले काम नहीं कर रहे हैं तो कच्चे / सीरियलाइज्ड / डेटा लौटना एक डेवलपर दृष्टिकोण से बहुत भ्रामक हो सकता है और उस हाइब्रिड दृष्टिकोण के साथ अन्य डेवलपर्स को लाने की आवश्यकता है।
ASP.NET नॉन-कोर वेब एप्लिकेशन में उस समस्या को कम करने के लिए अब तक जो सबसे अच्छी तकनीक आई है वह एमवीसी-आधारित वेब एप्लीकेशन में वेब एपीआई पैकेज को आयात करना (और ठीक से कॉन्फ़िगर करना) है, इसलिए मेरे पास दोनों का सबसे अच्छा हो सकता है दुनिया: Controllersदृश्यों के लिए, ApiControllersडेटा के लिए।
ऐसा करने के लिए, आपको निम्नलिखित कार्य करने होंगे:
- NuGet का उपयोग करते हुए निम्नलिखित वेब API पैकेज स्थापित करें:
Microsoft.AspNet.WebApi.Coreऔर Microsoft.AspNet.WebApi.WebHost।
- अपने
/Controllers/फ़ोल्डर में एक या एक से अधिक ApiControllers जोड़ें ।
- निम्नलिखित WebApiConfig.cs फ़ाइल को अपने
/App_Config/फ़ोल्डर में जोड़ें:
using System.Web.Http;
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
अंत में, आप अपने को ऊपर वर्ग पंजीकरण करना होगा स्टार्टअप (या तो वर्ग Startup.csया Global.asax.cs, आप Owin स्टार्टअप टेम्पलेट का उपयोग कर या नहीं कर रहे हैं निर्भर करता है)।
Startup.cs
public void Configuration(IAppBuilder app)
{
// Register Web API routing support before anything else
GlobalConfiguration.Configure(WebApiConfig.Register);
// The rest of your file goes there
// ...
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
ConfigureAuth(app);
// ...
}
Global.asax.cs
protected void Application_Start()
{
// Register Web API routing support before anything else
GlobalConfiguration.Configure(WebApiConfig.Register);
// The rest of your file goes there
// ...
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
// ...
}
यह दृष्टिकोण - इसके पेशेवरों और विपक्षों के साथ - इस पोस्ट में आगे बताया गया है जो मैंने अपने ब्लॉग पर लिखा था।
ApiControllerऔरControllerइसलिए यदि आप नए .NET का उपयोग कर रहे हैं, तो आपको अब ApiController के बारे में चिंता करने की आवश्यकता नहीं है - docs.microsoft.com/en-us/aspnet/core/tutorials/first-web- एपी