2016-04-07 4 views
5

में एएसपी.NET कोर वेबएपीआई 500 आंतरिक त्रुटि मैं इस वेबएपीआई को काम करने के लिए संघर्ष कर रहा हूं। खैर, आईआईएस के साथ काम करते हैं। आईआईएस एक्सप्रेस में सब ठीक काम करता है, लेकिन जब मैं इसे प्रकाशित करता हूं, विशेष रूप से 1 एपीआई अनुरोध काम नहीं करता है। मैं API/[Controller]/{date}/{integer} के यूआरएल तक पहुंचने की कोशिश कर रहा हूं। मैं 500 सर्वर त्रुटि प्राप्त कर रहा हूँ। API/[Controller]/{date} का मेरा अन्य मार्ग काम करता है।आईएसपी 7.5

[Route("api/[controller]")] 
    public class PostingsController : Controller 
    { 
     // GET: api/Postings/5 
     [HttpGet("{date}")] 
     public string Get(string date) 
     { 
      return date; 
     } 

     // GET api/Postings/20160407/2 
     [HttpGet("{date}/{modeID}")] 
     public List<TruckPosting> Get(string date, int modeID) 
     { 
      TruckPosting tp = new TruckPosting(); 
      List<TruckPosting> truckPostings = tp.GetTruckPostings(date, modeID); 
      return truckPostings; 
     } 
    } 

कारण यह है कि मैं एक सूची <> वापस जाने के लिए कोशिश कर रहा हूँ हो सकता है:

यहाँ मेरी एपीआई नियंत्रक है? मैं सोच रहा हूं कि यह वीएस के आईआईएस एक्सप्रेस में ठीक काम करता है।

संपादित

यहाँ मेरी startup.cs पेज है:

public void ConfigureServices(IServiceCollection services) 
     { 
      services.AddMvc(); 
     } 

public void Configure1(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
      { 
       app.UseIISPlatformHandler(); 
       app.UseDefaultFiles(); 
       app.UseStaticFiles(); 
       app.UseFileServer(true); 
       app.UseMvc(); 
      } 

      // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
      { 
       app.Map("/appRoot", (app1) => this.Configure1(app1, env, loggerFactory)); 
      } 
+0

क्या आपने सर्वर के ईवेंट लॉग की जांच की? आमतौर पर एक 500 अपवाद के कारण होता है और अक्सर आप आईआईएस मशीन पर 'एप्लिकेशन लॉग' में उन विवरणों को पा सकते हैं। – CodingGorilla

+0

आप अपनी स्ट्रिंग दिनांक पैरामीटर – InferOn

+0

@ इनफर-ऑन के उपयोग की जांच कर सकते हैं आपका क्या मतलब है? – James

उत्तर

8

एक अच्छा विचार है कि यह है कि तथ्य यह है कि आप एक सूची वापस लौट रहे हैं हो सकता है यही कारण है कि। हमारे पास कोर वेब एपीआई विधियों का काम है और वे सभी Task<IEnumerable<Foo>> लौटते हैं। करने के लिए Task<IEnumerable<TruckPosting>>

संपादित वापसी प्रकार List<TruckPosting> बदलने का प्रयास करें: यदि आप अपने कॉन्फ़िगर (या Configure1) की शुरुआत में निम्न कोड पंक्ति डाल करने की आवश्यकता होगी विधि 500 ​​(आंतरिक सर्वर) त्रुटियों के लिए विवरण देखने के लिए:

app.UseDeveloperExceptionPage(); 

और जाहिर है यह ऐसा कुछ नहीं है जो आप उत्पादन वातावरण में चाहते हैं।

EDIT2: वीएस में चलते समय आप अपवाद विवरण दिखाने के लिए नीचे दिए गए कोड का उपयोग कर सकते हैं जब तक होस्टिंग: गुणों के डीबग अनुभाग में पर्यावरण चर "विकास" पर सेट हो। प्रकाशन के बाद आपको ASPNET_ENV नामक सिस्टम एनवायरनमेंट वैरिएबल बनाना होगा और इसके मान को "डेवलपमेंट" पर सेट करना होगा या कोड UseDeveloperExceptionPage() विधि को कॉल नहीं करेगा।

if (env.IsDevelopment()) 
{ 
    app.UseDeveloperExceptionPage(); 
} 
+0

यही कारण है कि आप'if (env.IsDevelopment()) 'का उपयोग करना चाहते हैं, इसलिए आपको ' dev अपवाद पृष्ठ ' – Hypnobrew

+0

हाँ, लेकिन मुझे नहीं पता था कि वह अपनी परियोजना को कैसे प्रकाशित कर रहा था, इसलिए मैं उस कार्य को करने के लिए पर्यावरण चर सेट करने में नहीं गया। दूसरे विचार पर मुझे शायद होना चाहिए। मैं इसका जवाब अपडेट करूंगा यह दिखाएं। –

+0

ठीक है, इसलिए मैंने इसे कम कर दिया है। यह उन वस्तुओं की सूची के साथ कुछ करना है जो मैं लौट रहा हूं। मुझे लगा कि अगर मैं सिर्फ कुछ तारों की एक साधारण सूची लौटाता हूं, तो यह ठीक काम करता है। मुझे नहीं पता कि इसे कैसे डिबग करना है। ऐप। उपयोग डेवलपर अपवाद पृष्ठ कुछ भी नहीं बदलता है। डब्ल्यू में टोपी आदेश में जाने की जरूरत है? – James

0

मैंने आज गिटहब पर एक एएसपी.NET कोर कस्टम अपवाद हैंडलर पोस्ट किया। मैंने सोचा कि यह आपके लिए सहायक हो सकता है क्योंकि आप एक एसपीए बना रहे हैं और शायद बहुत सी वेब एपीआई विधियों को बुला रहे हैं।

यह एक मिडलवेयर प्रोजेक्ट है जो वेब एपीआई कॉल के लिए त्रुटि संदेश देता है और गैर वेब एपीआई कॉल के लिए एक त्रुटि पृष्ठ पर रीडायरेक्ट करता है। यह SQL सर्वर डेटाबेस में अपवाद लॉग भी कर सकता है। प्रदर्शन के साथ मदद करने के लिए यह एक अलग धागे में किया जाता है।

समाधान में एक डेमो एप्लिकेशन शामिल है जो दिखाता है कि दोनों वेब एपीआई अपवादों और गैर वेब एपीआई अपवादों के लिए अपवाद हैंडलर का उपयोग कैसे करें।

यहां लिंक है।
https://github.com/ClintBailiff/CustomExceptionHandler

यदि आप इसे जांचते हैं और कुछ सुझाव या टिप्पणियां हैं, तो मैं उन्हें सुनना पसंद करता हूं।