2011-01-27 20 views
8

क्षमा करें अगर इस साइट पर पहले से ही इसका उत्तर दिया गया है, तो मैंने खोज की लेकिन मुझे यह सटीक परिदृश्य नहीं मिला।"System.Web.HttpException (0x80004005) का निवारण कैसे करें: फ़ाइल मौजूद नहीं है"?

मैं एक डब्ल्यूसीएफ सेवा में लॉग 4नेट जोड़ रहा हूं। मैंने Application_Error ईवेंट में एक हैंडलर जोड़ा, और यह फ़ाइल को पकड़ रहा है प्रत्येक अनुरोध पर त्रुटि नहीं मिली।

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

हालांकि, यह एक डब्ल्यूसीएफ सेवा है, कोई सीएसएस स्टाइलशीट नहीं है, और रूट में फेविकॉन जोड़ने से समस्या हल नहीं हुई है।

क्या किसी और के पास इसका निवारण करने का कोई अच्छा तरीका है?

कुछ सुराग:

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

    यूआरएल:http://localhost:3994/

    FilePath:/

    त्रुटि: सिस्टम.Web.HttpException (0x80004005): फ़ाइल मौजूद नहीं है।

संपादित करें: ऊपर मूल्यों क्या लॉग इन अपवाद में दिखाने हैं:

protected void Application_Error(object sender, EventArgs e) 
{ 
    var objErr = Server.GetLastError().GetBaseException(); 
    if (objErr is System.Web.HttpException) 
    { 
     var filePath = Context.Request.FilePath; 
     var url = ((HttpApplication) sender).Context.Request.Url; 
     Log.Error("URL: " + url + "; FilePath: " + filePath, objErr); 
    } else 
     Log.Error("Application Error", objErr); 
} 

किसी भी मदद की बहुत सराहना की जाएगी।

+0

क्या आप यूआरएल में एसएससी फाइल का उल्लेख करना भूल गए? – Pradeep

+0

मेरे द्वारा पोस्ट किए गए संपादन को देखें। – camainc

+1

टिप्पणियों में कोड को प्रारूपित करने के लिए 'कुंजी (जिसमें ~ अक्षर भी है) का उपयोग करें। –

उत्तर

6

कारण यह है कि सेवा निर्दिष्ट नहीं की गई है। जब कोई वेब सर्वर (स्थानीय देव भी एक साथ) उस फ़ोल्डर के लिए एक अनुरोध प्राप्त करता है जिसे वे डिफ़ॉल्ट फ़ोल्डर के लिए उस फ़ोल्डर के अंदर देखते हैं (आमतौर पर कहा जाता है: index.htm, index.html, default.asp, default.aspx, आदि) और वर्तमान में (जब तक आप एक आरईएसटी आधारित सेवा विवरण का उपयोग नहीं कर रहे हैं)। जब आप वीएस से भागते हैं तो डीबग आपको सीधे वास्तविक सेवा पर ले जाएगा।

इस मामले में क्योंकि आपने एक सेवा बनाई है, आपको सटीक सेवा का स्थान निर्दिष्ट करने की आवश्यकता है यानी http://localhost:3994/service.svc

इसके अलावा: यदि आप डीबग सत्र शुरू करते हैं और फिर URL को http://localhost:3994/ पर बदलते हैं तो आपको यह जांचने में सक्षम होना चाहिए कि यह डीबगर के साथ है।

+0

धन्यवाद, इससे मुझे यह समझने में मदद मिली कि यह क्यों हो रहा है। मुझे लगता है कि यह उत्पादन वातावरण में अक्सर नहीं होना चाहिए, इसलिए मैं इसके लिए जाल में कुछ तर्क जोड़ूंगा और इसके बारे में ज्यादा चिंता न करें। – camainc

+1

बेहतर अभी तक, एक स्थिर HTML पृष्ठ को डिफ़ॉल्ट के रूप में जोड़ें जो उपयोगकर्ता को उस साइट पर जो कुछ भी है, उसके बारे में कुछ भी नहीं बताता है। फिर आपको त्रुटि को सौंपने की चिंता करने की आवश्यकता नहीं है क्योंकि आप आमतौर पर 404 (नहीं मिला) त्रुटि लॉग नहीं करेंगे। –

+0

धन्यवाद! यह एक उपयोगी सुझाव है। – camainc

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