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




asp.net-mvc asp.net-mvc-4 (5)

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

Install-Package Microsoft.AspNet.WebApi

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

Install-Package AspNetWebApi

अधिक details

https://code.i-harness.com

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

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


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

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

Install-Package Microsoft.AspNet.WebApi

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

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

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

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


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

विजुअल स्टूडियो ने '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);


मेरे एमवीसी 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>
    




visual-studio-2012