asp.net-mvc - किसी मौजूदा एएसपी.नेट एमवीसी 4 वेब अनुप्रयोग प्रोजेक्ट में वेब एपीआई कैसे जोड़ें?




asp.net-mvc-4 asp.net-web-api visual-studio-2012 (7)

मेरे एमवीसी 5 प्रोजेक्ट में वेबएपीआई जोड़ने के लिए।

  1. NuGet पैकेज प्रबंधक कंसोल खोलें और चलाएं

    PM> Install-Package Microsoft.AspNet.WebApi
    
  2. System.Web.Routing, System.Web.Net और System.Net.Http dlls के संदर्भ जोड़ें यदि पहले से नहीं है

  3. राइट क्लिक कंट्रोलर फ़ोल्डर> नया आइटम> वेब> वेब एपीआई कंट्रोलर जोड़ें

  4. Web.config तदनुसार वीएस द्वारा संशोधित किया जाएगा

  5. यदि पहले से नहीं है तो Application_Start () {} विधि जोड़ें

    protected void Application_Start()
    {
        //this should be line #1 in this method
        GlobalConfiguration.Configure(WebApiConfig.Register);
    }
    
  6. निम्न श्रेणी जोड़ें (मैंने global.asax.cs फ़ाइल में जोड़ा)

    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 }
             );
         }
     }
    
  7. तदनुसार वेब एपीआई विधि संशोधित करें

    namespace <Your.NameSpace.Here>
    {
        public class VSController : ApiController
        {
            // GET api/<controller>   : url to use => api/vs
            public string Get()
            {
                return "Hi from web api controller";
            }
    
            // GET api/<controller>/5   : url to use => api/vs/5
            public string Get(int id)
            {
                return (id + 1).ToString();
            }
        }
    }
    
  8. पुनर्निर्माण और परीक्षण

  9. एक साधारण एचटीएमएल पेज बनाएँ

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>    
        <script src="../<path_to_jquery>/jquery-1.9.1.min.js"></script>
        <script type="text/javascript">
            var uri = '/api/vs';
            $(document).ready(function () {
                $.getJSON(uri)
                .done(function (data) {
                    alert('got: ' + data);
                });
    
                $.ajax({
                    url: '/api/vs/5',
                    async: true,
                    success: function (data) {
                        alert('seccess1');
                        var res = parseInt(data);
                        alert('got res=' + res);
                    }
                });
            });
        </script>
    </head>
    <body>
    ....
    </body>
    </html>
    

मैं विजुअल स्टूडियो 2012 में विकसित एएसपी.नेट एमवीसी 4 वेब एप्लिकेशन प्रोजेक्ट में एएसपी. NET वेब एपीआई जोड़ना चाहता हूं। परियोजना के लिए एक कार्यशील वेब एपीआई जोड़ने के लिए मुझे कौन से कदम उठाने चाहिए? मुझे पता है कि मुझे एपीकंट्रोलर से प्राप्त नियंत्रक की आवश्यकता है, लेकिन यह सब मुझे पता है।

अगर मुझे अधिक जानकारी प्रदान करने की ज़रूरत है तो मुझे बताएं।


जैसे ही आप नियंत्रक फ़ोल्डर के तहत "वेबएपी कंट्रोलर" जोड़ते हैं, विजुअल स्टूडियो स्वचालित रूप से निर्भरताओं का ख्याल रखता है;

विजुअल स्टूडियो ने 'MyTestProject' प्रोजेक्ट करने के लिए एएसपी.NET वेब एपीआई 2 के लिए निर्भरताओं का पूरा सेट जोड़ा है।

प्रोजेक्ट में Global.asax.cs फ़ाइल को ASP.NET वेब API को सक्षम करने के लिए अतिरिक्त परिवर्तनों की आवश्यकता हो सकती है।

  1. निम्नलिखित नामस्थान संदर्भ जोड़ें:

    System.Web.Http का उपयोग कर; System.Web.Routing का उपयोग कर;

  2. यदि कोड पहले से ही Application_Start विधि को परिभाषित नहीं करता है, तो निम्न विधि जोड़ें:

    संरक्षित शून्य आवेदन_स्टार्ट () {}

  3. Application_Start विधि की शुरुआत में निम्न पंक्तियां जोड़ें:

    GlobalConfiguration.Configure (WebApiConfig.Register);


एमवीसी और वेब एपीआई परियोजनाओं को विलय करना शुरू करने से पहले मैं विभिन्न परियोजनाओं के रूप में अलग करने के लिए विपक्ष और पेशेवरों के बारे में पढ़ने का सुझाव दूंगा । एक बहुत ही महत्वपूर्ण बात (मेरा अपना) प्रमाणीकरण प्रणाली है, जो पूरी तरह से अलग है।

यदि आपको एमवीसी और वेब एपीआई दोनों पर प्रमाणित अनुरोधों का उपयोग करने की आवश्यकता है, तो आपको याद रखना होगा कि वेब एपीआई रीस्टफुल है (सत्र, सरल HTTP अनुरोध इत्यादि रखने की आवश्यकता नहीं है), लेकिन एमवीसी नहीं है।

कार्यान्वयन के मतभेदों को देखने के लिए केवल टेम्पलेट्स से विजुअल स्टूडियो 2013 में 2 अलग-अलग परियोजनाएं बनाएं: एमवीसी के लिए एक और वेब एपीआई के लिए एक (सृजन के दौरान "व्यक्तिगत प्रमाणीकरण" चालू करना न भूलें)। आप AuthencationControllers में बहुत अंतर देखेंगे।

तो, जागरूक रहें।


आप नीचे की छवि के रूप में nuget से स्थापित कर सकते हैं:

या, पैकेज प्रबंधक कंसोल पर निम्न कमांड लाइन चलाएं:

Install-Package Microsoft.AspNet.WebApi

अद्यतन 11/22/2013 - यह नवीनतम वेबएपी पैकेज है:

Install-Package Microsoft.AspNet.WebApi

मूल उत्तर (यह एक पुराना वेबएपी पैकेज है)

Install-Package AspNetWebApi

अधिक details


मुझे करने के लिए आवश्यक कदम थे:

  1. System.Web.Http.WebHost संदर्भ जोड़ें।
  2. App_Start\WebApiConfig.cs जोड़ें (नीचे कोड स्निपेट देखें)।
  3. Global.asax.cs में नेमस्पेस Global.asax.cs . Global.asax.cs आयात करें।
  4. MvcApplication.Application_Start() (फ़ाइल Global.asax.cs में WebApiConfig.Register(GlobalConfiguration.Configuration) में MvcApplication.Application_Start() WebApiConfig.Register(GlobalConfiguration.Configuration) को कॉल करें, डिफ़ॉल्ट वेब अनुप्रयोग मार्ग को पंजीकृत करने से पहले , जो अन्यथा प्राथमिकता लेता है।
  5. System.Web.Http.ApiController से प्राप्त नियंत्रक जोड़ें।

मैं अपने एपीआई नियंत्रक को परिभाषित करने के लिए ट्यूटोरियल (आपका पहला एएसपी.नेट वेब एपीआई) से पर्याप्त सीख सकता था।

App_Start \ WebApiConfig.cs:

using System.Web.Http;

class WebApiConfig
{
    public static void Register(HttpConfiguration configuration)
    {
        configuration.Routes.MapHttpRoute("API Default", "api/{controller}/{id}",
            new { id = RouteParameter.Optional });
    }
}

Global.asax.cs:

using System.Web.Http;

...

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();

    RegisterGlobalFilters(GlobalFilters.Filters);
    WebApiConfig.Register(GlobalConfiguration.Configuration);
    RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}

10.16.2015 अपडेट करें:

शब्द में यह है, NuGet पैकेज Microsoft.AspNet.WebApi उपर्युक्त काम करने के लिए स्थापित होना चाहिए।


आप उपरोक्त कोड ले सकते हैं और एक कस्टम नियंत्रक फैक्ट्री पेश करके एक कदम आगे जा सकते हैं जो प्रत्येक नियंत्रक में हैंडलरर विथइल्मा विशेषता को इंजेक्ट करता है।

अधिक जानकारी के लिए एमवीसी में लॉग इन करने पर मेरी ब्लॉग श्रृंखला देखें। पहला लेख एल्माह स्थापित करने और एमवीसी के लिए चल रहा है।

लेख के अंत में डाउनलोड करने योग्य कोड का एक लिंक है। उम्मीद है की वो मदद करदे।

http://dotnetdarren.wordpress.com/





asp.net-mvc asp.net-mvc-4 asp.net-web-api visual-studio-2012