2014-05-02 10 views
9

मैंने एक नया वेब एपीआई 2 विकसित किया है जो स्थानीय स्तर पर बहुत अच्छा काम करता है, हालांकि जब मैं अपने उत्पादन सर्वर (इस मामले में अरविक्स) में एक ही कोड अपलोड करता हूं तो मैं सभी जब मैं इसे कॉल करता हूं तो 404 प्राप्त करें। मैंने वेब खोज, फ़ोरम पढ़ने आदि को HOURS बिताया है .. और कोई समाधान नहीं ढूंढ पा रहा है, इसलिए मैं यहां अपने अंतिम प्रयास के रूप में पूछ रहा हूं।एएसपी.नेट वेब एपीआई 2 स्थानीय रूप से काम करता है लेकिन उत्पादन वेब सर्वर पर नहीं

मैं वर्तमान में केवल डिफ़ॉल्ट प्रोजेक्ट के साथ परीक्षण कर रहा हूं जो नई परियोजना> एएसपी.NET वेब एपीआई 2 खाली प्रोजेक्ट विजुअल स्टूडियो में बनाया जाता है। यह एक ValuesController के साथ एक खाली परियोजना बनाता है। आपको JS12 प्रतिक्रिया /api/values कहा जा सकता है, लेकिन यह भी काम नहीं करता है।

मैं स्थानीय और वेब सर्वर पर एपीआई का परीक्षण करने के लिए फिडलर का उपयोग कर रहा हूं।

http://localhost:1993/api/values <--- works great 

लेकिन

http://api.mydomain.com/api/values <--- returns 404 

नोट: मैं इस मामले में एक उप डोमेन "API" बनाया है, लेकिन एपीआई के लिए कोड के लिए सब कुछ से कब बनाया गया था अपरिवर्तित है।

क्यों दुनिया में यह स्थानीय रूप से काम करता है लेकिन उत्पादन वेब सर्वर पर नहीं?

+0

जांचें कि क्या सभी डीएल तैनात किए गए हैं, और साइट को .NET 4.5.1 ऐप पूल में एप्लिकेशन के रूप में स्थापित किया गया है। –

+0

सभी डीएलएल वहां हैं और यह एएसपी.NET 4.0 एकीकृत के तहत चल रहा है, लेकिन .NET 4.5.1 स्थापित है और सर्वर पर चल रहा है। मैं ईमानदारी से कोई कारण नहीं देखता कि यह क्यों काम नहीं कर रहा है। – Cory

+0

आपके आवेदन की जड़ के बारे में क्या? दूरस्थ सर्वर पर डिफ़ॉल्ट पृष्ठ दिखाता है? – Uriil

उत्तर

1

कि सर्वर 404 (नहीं मिला) कई चीजें इंगित कर सकता है। हालांकि आप निम्नलिखित कदम का उपयोग कर सकते हैं:

  1. अपने एक फ़ोल्डर उप डोमेन http://api.mydomain.com को readme.txt की तरह एक साधारण पाठ दस्तावेज़ जोड़ें, और उस तक पहुँच प्राप्त करने का प्रयास करें। यदि आप उस फ़ाइल तक नहीं पहुंच पा रहे हैं, तो इसका मतलब है कि सबडोमेन ठीक से कॉन्फ़िगर नहीं किया गया है।

  2. "प्रकाशित करें" कार्यक्षमता का उपयोग कर webservice प्रकाशित करें, ताकि सभी डीएलएल की प्रतिलिपि बनाई जा सके।

उसके बाद, फिर से वेब एपीआई तक पहुंचने का प्रयास करें।

आशा है कि मदद करें।

0

"नोट: मैंने इस मामले में एक सबडोमेन 'एपीआई' बनाया है, लेकिन एपीआई के लिए कोड के लिए सब कुछ अपरिवर्तित होने पर अपरिवर्तित है।"

आपकी टिप्पणी के ऊपर संदेहजनक है, आपको रूट निर्देशिका में अपना वेब एपीआई एप्लिकेशन प्रकाशित करना चाहिए। जैसे http://example.com "MyExample" फ़ोल्डर को इंगित कर रहा है, तो एप्लिकेशन "MyExample" फ़ोल्डर पर प्रकाशित होना चाहिए। इसके बाद आप http://example.com/api/ {नियंत्रक}/{action}

-1

स्थानीय एपीआई 2 विधि के लिए स्थानीय मशीन पर ठीक काम करने का एक कारण है लेकिन उत्पादन सर्वर पर नहीं है कि आप जिस विधि को बुला रहे हैं वह काम कर रहा है स्थानीय मशीन लेकिन रिमोट सर्वर पर नहीं। ऐसे मामले में आपको संदेश 404 या 500 प्राप्त होगा, और आप खो जाएंगे क्यों यह रूटिंग विफल हो रही है। दूरस्थ सर्वर पर कोई विधि विफल क्यों होगी, इसके कई कारण हो सकते हैं। मेरे लिए, मैं अपनी विधि में डेटाबेस से पूछताछ कर रहा था और मेरा कनेक्शनस्ट्रिंग दूरस्थ सर्वर के लिए सेट नहीं किया गया था। इसे हल करने का एक तरीका उस विशेष विधि में कुछ बहुत ही सरल कोड डालना होगा और परीक्षण करना होगा कि रूटिंग काम कर रही है। फिर त्रुटियों के कारणों के लिए अपना मूल कोड देखें।

+0

मैं अपनी परियोजनाओं में व्यापक रूप से वेब api2 का उपयोग कर रहा हूं, और मैंने अपने व्यक्तिगत अनुभवों को हर किसी की मदद करने के लिए साझा किया (क्योंकि मुझे दूसरों द्वारा बहुत मदद मिली है)। – Zeni

+0

मैं अपनी परियोजनाओं में व्यापक रूप से वेब api2 का उपयोग कर रहा हूं, और मैंने अपने व्यक्तिगत अनुभवों को हर किसी की मदद करने के लिए साझा किया (क्योंकि मुझे दूसरों द्वारा बहुत मदद मिली है)। त्रुटि 404 और 500 यह नहीं बताती कि आपका रूटिंग ठीक है लेकिन विधि त्रुटि दे रही है। यह कई लोगों के लिए भ्रमित हो सकता है क्योंकि वे सोच रहे होंगे कि रूटिंग/पथ में कुछ गड़बड़ है। इस प्रयास के लिए मैं रेटिंग नीचे उतरता हूं जो मेरे लिए बहुत ही आश्चर्यजनक है। मुझे इस विशेषज्ञ को रेट करने वाले महान विशेषज्ञ द्वारा कारण जानना अच्छा लगेगा। उसे आगे आने और अपने ज्ञान के साथ ज्ञान देने के लिए साहस होना चाहिए। मैं इंतजार कर रहा हूं ....... – Zeni

0

बस एक साधारण सुझाव जो मुझे यकीन है कि आपने पहले ही विचार किया है, लेकिन क्या आपने सर्वर की फ़ायरवॉल पर http पोर्ट 80 खोला है?

अपनी परियोजना की जड़ में एक सादे पुरानी एचटीएमएल फ़ाइल भी चिपकाएं और देखें कि सर्वर इसे सेवा देता है या नहीं।

+0

चूंकि 404 एक वेब सर्वर त्रुटि है, इसलिए यह संभव नहीं है कि वेब सर्वर पोर्ट बंद होने पर यह वापस कर दिया जाएगा। –

0
अपने मामले में

, जब से तुम 'एपीआई' का उप बनाते हैं, आप

http://api.mydomain.com/api/api/values 

टिप्पणी की कोशिश करनी चाहिए कि आप कार्य के लिए डेटाबेस का उपयोग कर रहे हैं, तो आप अपने वेब config

में connectionstring बदलना चाहिए
0

कृपया होस्ट किए गए डोमेन पर .net ढांचे को सत्यापित करें जो पुराना हो सकता है।

  • वेब एपीआई 2 4.5 फ्रेमवर्क पर माना जाता है।
संबंधित मुद्दे