2013-12-12 9 views
22

का उपयोग करने के लिए वेब एपीआई कनवर्ट करें मैं एक मौजूदा एएसपी.NET वेब एपीआई प्रोजेक्ट (वर्तमान में आईआईएस में होस्ट किया गया) को परिवर्तित करने की कोशिश कर रहा हूं जो स्वयंहोस्ट फ्रेमवर्क का उपयोग कर सकता है। मैं वास्तविक विवरण पर थोड़ा अस्पष्ट हूं लेकिन समझता हूं कि मैं एक कंसोल विंडो में एक स्व-होस्ट सर्वर चला सकता हूं और उसके बाद सेवा को चला सकता हूं। मेरी समस्या यह है कि मेरी परियोजना एक एमवीसी परियोजना है और एक कंसोल नहीं है। कंसोल/विंडोज ऐप के साथ मेरी परिचितता कुछ हद तक सीमित है क्योंकि मैं आम तौर पर आईआईएस में आयोजित होने वाली परियोजनाओं के साथ काम करता हूं।स्वत: होस्टिंग

मैं थोड़ा उलझन में हूं कि क्या मुझे अपने मौजूदा वेब एपीआई प्रोजेक्ट को विजुअल स्टूडियो में एक नए कंसोल एप्लिकेशन में बदलने की ज़रूरत है, या अगर समाधान में एक और कंसोल एप्लिकेशन प्रोजेक्ट बनाने का कोई तरीका है जो इस तरह कार्य कर सकता है वेब एपीआई सेवाओं के लिए वेब सर्वर, या यदि मौजूदा एमवीसी प्रोजेक्ट (ग्लोबल.एक्सएक्स एंट्री पॉइंट ओवरराइडिंग) पर मुख्य() प्रविष्टि बिंदु के साथ कंसोल तत्व जोड़ने का कोई तरीका है, तो

खोज नहीं हुई अधिक जानकारी प्राप्त करें जो मुझे इस ज्ञान के अंतर को भरने में मदद करेगी। उम्मीद है कि कोई मुझे सही दिशा में इंगित कर सकता है। यहां तक ​​कि एक उच्च स्तर पर भी।

+0

कुछ उदाहरण हैं http://stackoverflow.com/questions/12899360/getting-a-post-endpoint-to -वर्क-इन-सेल्फ-होस्टेड-webservicehost-c-sharp-webservi, http://stackoverflow.com/questions/13165533/deserialize -जसन-ऑब्जेक्ट-से-एंड्रॉइड-ऐप-टू-डब्ल्यूसीएफ-webservice मेरे पिछले उत्तरों से। –

+0

@ एल.बी. आपकी टिप्पणी के लिए धन्यवाद, लेकिन जब तक मुझे कुछ याद नहीं आ रहा है, मैं काफी नहीं देख सकता कि यह प्रश्न का उत्तर कैसे देता है। – trnelson

+0

ट्रेलसन, दोनों उत्तर शो * स्वयं निहित * क्लाइंट और सर्वर कोड को RestFul सेवाओं के लिए। अगर आपको उपयोगी नहीं मिलता है तो बस मेरी टिप्पणी को अनदेखा करें। –

उत्तर

38

मुझे हाल ही में एक वेब एपीआई परियोजना को ओविन (विजुअल स्टूडियो 2013 पर) का उपयोग करके स्वयं-होस्ट की गई सेवा में परिवर्तित करना पड़ा। मैंने निम्नानुसार किया:

(1) प्रोजेक्ट की रूट पर मैन्युअल रूप से प्रोग्राम.cs और Startup.cs फ़ाइलें शामिल की गईं। कोड सहित दोनों फाइलें यहां वर्णित हैं: http://www.asp.net/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api

(2) वेब एपीआई प्रोजेक्ट के गुणों के लिए गया। "एप्लिकेशन" अनुभाग पर, मैंने "आउटपुट प्रकार" को "कंसोल एप्लिकेशन" के रूप में बताया, और "प्रोग्राम" क्लास को "स्टार्टअप ऑब्जेक्ट" के रूप में सेट किया।

हालांकि की आवश्यकता नहीं है, मैं थोड़ा "का उपयोग" ब्लॉक Program.Main() के भीतर देखने के लिए संशोधित इस प्रकार है:

// Start OWIN host 
using (WebApp.Start<Startup>(url: baseAddress)) 
{ 
    // Create HttpCient and make a request to api/values 
    HttpClient client = new HttpClient(); 
    var response = client.GetAsync(baseAddress + "api/values").Result; 

    if (response != null) 
    { 
    Console.WriteLine("Information from service: {0}", response.Content.ReadAsStringAsync().Result); 
    } 
    else 
    { 
    Console.WriteLine("ERROR: Impossible to connect to service"); 
    } 

    Console.WriteLine(); 
    Console.WriteLine("Press ENTER to stop the server and close app..."); 
    Console.ReadLine(); 
} 

अंत में, बजाय स्टार्टअप भीतर बुला config.Routes.MapHttpRoute() कई बार .Configuration(), तो आपको मार्गों आप पहले से ही वेब एपीआई के लिए लिखा था उल्लेख कर सकते हैं:

// Configure Web API for self-host. 
var config = new HttpConfiguration(); 
WebApiConfig.Register(config);   
app.UseWebApi(config); 
+0

Program.cs "स्टार्टअप ऑब्जेक्ट" में दिखाई नहीं दे रहा है। कोई विचार? – Sinaesthetic

+0

Derp। कोई बात नहीं। मुख्य स्थिर बनाने के लिए भूल गए :) – Sinaesthetic

+0

यह एक अच्छा जवाब ब्रो है। इच्छा है कि मैं इसे +10 दे सकता हूं। धन्यवाद! –

संबंधित मुद्दे