2013-05-13 5 views
27

वीएस 2012 में, मैं एक वेब एपीआई परियोजना में jQuery कॉल के साथ एक एमवीसी 4 वेब एप्लिकेशन बनाने का प्रयास कर रहा हूं। (अन्य देवता हमारे वर्तमान, मूल ऐप के साथ एपीआई का उपभोग करेंगे, और शायद भविष्य में एपीआई में जोड़ देंगे।) तो मेरे पास एक प्रोजेक्ट है जो वेब एपीआई है, और एक और प्रोजेक्ट जो एमवीसी 4 वेबसाइट है। मैं केवल उनमें से एक को चलाने के लिए सेट कर सकता हूं, और वे लोकलहोस्ट का उपयोग करते हैं: xxxxx।उसी समाधान में एमवीसी परियोजना से वेब एपीआई परियोजना को डीबग कैसे करें

मैं दोनों में परिवर्तन कैसे डिबग कर सकता हूं? उदाहरण के लिए, मान लीजिए कि मैं एक नया एपीआई पथ/एपीआई/ग्राहक/प्राप्त करता हूं और फिर उस पथ पर एक नया jQuery AJAX कॉल जोड़ता है और परिणामी JSON के साथ कुछ करता हूं। मैंने दोनों परियोजनाओं में कोड बदल दिया है और इसे अंत तक अंत तक पालन करना चाहता हूं; मैं दोनों कैसे लॉन्च करूं? मैं दोनों को डीबग कैसे करूं?

बस स्पष्ट होने के लिए, एमवीसी ऐप एपीआई को सर्वर-साइड कॉल नहीं कर रहा है, मैं ज्यादातर एमवीसी का उपयोग कर रहा हूं ताकि आसानी से बंडलिंग, मिनीफिकेशन, और (उम्मीद है) प्री-कंपाइल हैंडलबार टेम्पलेट्स का आसानी से उपयोग कर सकें नेट; एपीआई कॉल jQuery से आ रहे हैं। चूंकि मैं अभी भी इन प्रौद्योगिकियों के लिए अपेक्षाकृत नया हूं, वैकल्पिक सुझावों का स्वागत है।

अग्रिम धन्यवाद।

+6

आप समाधान एक्सप्लोरर में समाधान पर राइट-क्लिक कर सकते हैं और "स्टार्टअप प्रोजेक्ट सेट करें ..." चुनें, फिर "एकाधिक स्टार्टअप प्रोजेक्ट्स" चुनें और जब आप डीबग करते हैं, तो आप उन सभी परियोजनाओं में ब्रेकपॉइंट्स को हिट कर सकते हैं जिनमें " प्रारंभ"। –

+1

@TDL: यह काम करता है, धन्यवाद। लेकिन यह एक और समस्या का खुलासा कर रहा है कि प्रत्येक परियोजना एक अलग लोकलहोस्ट पोर्ट नंबर से जुड़ी हुई है, जिससे उन्हें अलग-अलग वेबसाइटें (और डोमेन?) बनाते हैं। योजना एक ही साइट पर तैनात है, लेकिन एपीआई मार्ग सभी '/ api /' से शुरू होते हैं। जैसा कि यह खड़ा है, मैं डीबगिंग करते समय अपने jQuery कॉल को सही डोमेन का संदर्भ कैसे बना सकता हूं?मैं निश्चित रूप से डीबग मोड में यूआरएल को प्रतिस्थापित नहीं करना चाहता, और फिर ऐसा लगता है कि मुझे क्रॉस-डोमेन एक्सेस समस्याएं मिल रही हैं। क्या इसका कोई मतलब है? – Jammerms

+1

यदि आप दोनों एक ही वेबसाइट के तहत होस्ट करना चाहते हैं, तो दोनों परियोजनाओं को एक साथ क्यों न करें? – LordHits

उत्तर

59

मैं एक ही समस्या थी और यहां से एक समाधान पाया है: गुण स्टार्टअप परियोजना के लिए जाने के लिए क्लिक करें,

अपने समाधान फ़ाइल में:

forums.asp.net

ठीक निम्न करने के लिए है नोड (यदि यह पहले से नहीं चुना गया है)

अगला एकाधिक स्टार्टअप परियोजनाओं का चयन करें। अपनी वेबसाइट और अपनी webservice का चयन करें और एक्शन कॉलम में सुनिश्चित करें कि उनमें से दोनों को "स्टार्ट" चुना गया है।

अब जब आप अपनी वेबसाइट डीबग करते हैं और अपने webservice में ब्रेक पॉइंट डालते हैं, तो इसे ब्रेक पॉइंट हिट करना चाहिए।

+3

यह जवाब होना चाहिए। – Tony

+0

आज मुझे कुछ शानदार सीखने के लिए धन्यवाद। एक जादू की तरह काम करता है। –

+0

उत्कृष्ट। मेरे पास एक एएसपीनेट एमवीसी (यूआई) प्रोजेक्ट है और इस वेब के साथ मेरी वेबएपीआई सेवा में एक और मैं एक ही समय में प्रकाशित और डिबग कर सकता हूं। :) –

0

मुझे अपने वेब एपीआई परियोजना के साथ एक ही समस्या थी। मेरे समाधान में बैकएंड पर 2 वेब एपीआई परियोजनाओं के साथ एक कोणीय फ्रंट एंड शामिल था। एक वेब एपीआई परियोजना ने "प्राधिकरण" और दूसरे "हैंडल" को संभाला। मैं एक प्रारंभिक बिंदु के रूप Taiseer Joudeh द्वारा निम्नलिखित ट्यूटोरियल का इस्तेमाल किया:

http://bitoftech.net/2014/09/24/decouple-owin-authorization-server-resource-server-oauth-2-0-web-api/

ब्रेकप्वाइंट "प्राधिकरण सर्वर" पर काम किया है ... लेकिन "संसाधन सर्वर" पर नहीं। मैंने अलग-अलग परियोजनाओं को देखने के लिए दो परियोजनाओं के पैकेजों की तुलना की। एक बार जब मैंने "संसाधन सर्वर" प्रोजेक्ट में "Microsoft.AspNet.WebApi.Cors" जोड़ा, तो ब्रेकपॉइंट्स काम करना शुरू कर दिया।

0

पार्टी के लिए देर से आ रहा है, लेकिन अगर कोई और समाधान ढूंढ रहा है, तो यह मेरे लिए सबसे अच्छा था: एपीआई प्रोजेक्ट को शुरुआती प्रोजेक्ट के रूप में सेट करें (मुझे एक स्टार्टअप तक सीमित करने की आवश्यकता है ताकि मैं कर सकूं ब्राउज़रों के बीच अधिक आसानी से फ्लिप)। सेवा प्रोजेक्ट को फायर करने के बाद, वेब/यूई प्रोजेक्ट पर राइट क्लिक करें और डीबग का चयन करें, नया इंस्टेंस प्रारंभ करें। आप दोनों चल रहे होंगे और आप सहजता से वेब से एपीआई तक कदम उठाएंगे।

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