2013-08-13 3 views
5

के भीतर वेब एपीआई सेट अप करना मेरे पास एक "अजीब अभ्यास" प्रश्न है। हमारी परियोजना के एक आर्किटेक्चर पर आवश्यकता डब्ल्यूसीएफ परियोजना के भीतर सभी एमवीसी भलाई (यदि संभव हो) के साथ वेब एपीआई स्थापित करना है। इसका मतलब है कि एक परियोजना के भीतर एक दूसरे के साथ डब्ल्यूसीएफ और वेब एपीआई वेब सेवाएं खड़ी हो जाएंगी।डब्ल्यूसीएफ परियोजना

क्या यह भी करने योग्य है? मैंने इसे एक छोटा सा दौरा दिया है और पाया है कि दो परियोजनाओं की वेब कॉन्फ़िगरेशन भी विलय करना बहुत कठिन है।

अपने सुझाव और टिप्पणी के लिए धन्यवाद,

जेकब

उत्तर

-1

यह संभव है लेकिन MVC अच्छाई (खोने का मतलब है कि यह है कि आप उदाहरण के लिए स्वत: ऑनलाइन प्रलेखन में बनाया के लिए उपयोग करने के लिए सक्षम नहीं होंगे साथ आपकी वेब सेवाएं)।

बस NuGet के माध्यम से वेब एपीआई इंस्टॉल करें और फिर अपना मार्ग global.asax में पंजीकृत करें। अपना एपीआई नियंत्रक बनाएं और यह सब अच्छा होना चाहिए।

संपादित करें 2017/02/01:

यह नहीं रह गया है सच है। चूंकि माइक्रोसॉफ्ट दृष्टिकोण एमवीसी और वेब एपीआई नियंत्रक को मर्ज करना था। अब कुछ भीसंभव है।

+1

सख्ती से सच नहीं है। आपके पास एक ही एप्लीकेशन में एमवीसी, वेब एपीआई और डब्ल्यूसीएफ हो सकता है। वे प्रौद्योगिकी के स्वतंत्र टुकड़े हैं। बस सुनिश्चित करें कि आपका रूटिंग ओवरलैप नहीं होता है, लेकिन इसके अलावा यह सिर्फ काम करता है। मेरे पास उत्पादन में एक ही वास्तुकला के साथ समाधान है। – reckface

+0

@reckface यह सच है, 2013 में नहीं था।कृपया टिप्पणी करने से पहले तिथियां देखें। यह पुराना समाधान है। –

+0

, मैंने आपकी प्रतिक्रिया तक तारीख को भी नोटिस नहीं किया ... – reckface

2

मैं इन चरणों का पीछा किया और यह ठीक काम किया:

  1. सुनिश्चित करें कि आपके WCF सेवा सही ढंग से काम कर रहा है।
  2. के माध्यम से Nuget Package Manager

    अपनी परियोजना के लिए वेबएपीआई स्थापित करें स्थापित करें-पैकेज Microsoft.AspNet.WebApi

  3. नियंत्रक फ़ोल्डर बनाएँ और अपने नियंत्रक वर्ग और तरीकों लिखें।

  4. Global.asax फ़ाइल Application_Start विधि में अपनी सेवाओं के लिए
  5. रजिस्टर मार्गों बनाएँ।

    protected void Application_Start(object sender, EventArgs e) 
    { 
        RegisterRoutes(RouteTable.Routes); 
    } 
    
    private void RegisterRoutes(RouteCollection routes) 
    { 
        routes.MapHttpRoute(
    
         "webapi_route", 
    
          "/{controller}/{action}/{id}", 
    
         new { controller = "controller_name", action = "method_name", id = RouteParameter.Optional } 
    
        ); 
    
        RouteTable.Routes.Add(new ServiceRoute("", new WebServiceHostFactory(), typeof(service_name))); 
    } 
    
+0

यहां सेवा_नाम क्या है? – jcmordan

+0

आपका डब्ल्यूसीएफ कक्षा का नाम। –

0

वास्तव में एक ही परियोजना के भीतर दो प्रौद्योगिकी के इस्तेमाल पर कोई बड़ी प्रतिबंध नहीं है। डिफ़ॉल्ट रूप से wcf asp.net की तुलना में एक अलग "पाइप लाइन" है, लेकिन जब तक इसे बदला जा सकता है। Web.config में नीचे कॉन्फ़िगरेशन का उपयोग करना, उसी एएसपीनेट पाइप लाइन का उपयोग करने के लिए डब्ल्यूसीएफ को कॉन्फ़िगर करना संभव है जिससे अनुरोध की ऑब्जेक्ट्स के पूरे जीवन चक्र को साझा किया जा सके। लेकिन विश्वास न करें कि यह दृष्टिकोण सभी मामलों के लिए सामान्य है, अन्य निर्णयों को उस निर्णय के लिए विचार करने की आवश्यकता है, उदाहरण के लिए, आप अपने आवेदन को वितरित करने की योजना कैसे बनाते हैं? जब आप डब्ल्यूसीएफ का एक संस्करण जारी करते हैं तो आप वेब.एपी को भी जारी करेंगे, कई मामलों में आप यह परिणाम नहीं चाहते हैं।

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> 
संबंधित मुद्दे