2015-10-06 16 views
9

मैं अकड़ यूआरएल के लिए पहुँच जब:वेब एपीआई - स्वैगर प्रलेखन त्रुटि 500 ​​

500 : undefined http://localhost:28483/swagger/docs/v1 

कोई भी विचार: http://localhost:28483/swagger/ui/index, यह इस त्रुटि उत्पन्न करता है?

UPDATED: फ़ायरबग में इस विस्तार त्रुटि देखें:

Not supported by Swagger 2.0: Multiple operations 
with path 'api/BimModel' and method 'GET'. See the config setting - \"ResolveConflictingActions\" for 
a potential workaround 
+0

आपको क्या त्रुटि मिली है? –

+0

@ कूंगले: ब्राउजर में जो कुछ भी मिला है वह सब कुछ है। –

उत्तर

7

स्वैगर एक ऑपरेशन (यह आम परिदृश्य के मामले में) की तरह के रूप में दो क्रियाएँ ...

GET api/Products 
GET api/Products/{id} 

जा पर विचार हो सकता है यह आप attribute routing का उपयोग इसे ठीक कर सकते हैं और इसके बाद के संस्करण इन विशेषताओं का उपयोग लगता है आपके कार्य इतने swagger उन्हें अलग से पहचान लेंगे।

[Route("api/Products")] 

[Route("api/Products/{id:guid}")] 
1

नियंत्रक में, यह दो अलग अलग प्राप्त आपरेशन हो गया और यह स्वैगर द्वारा अस्वीकृत है। मेरा सुझाव है कि प्रत्येक नियंत्रक के लिए या तो केवल एक ही जीईटी ऑपरेशन हो या modify the router in WebApiConfig

+1

दुर्भाग्य से ApiConfig में राउटर के संशोधन में मदद नहीं करता है। अभी भी 'swagger 2.0 द्वारा समर्थित नहीं है: पथ के साथ एकाधिक संचालन ... '। ऐसा लगता है कि मुझे प्रत्येक विधि के लिए नया नियंत्रक बनाना है या क्या कोई अन्य तरीका है कि कैसे सहयोग करने के लिए swagger को मजबूर करना है (कुछ विशेषताओं, ...)? – wolen

3

क्या आपने इसे स्वैगर कॉन्फ़िगर करने में सक्षम करने का प्रयास किया है?

c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First()); 
+1

हालांकि यह शायद त्रुटि को हल करता है, अन्य क्रियाएं तब swagger में दिखाई नहीं देगी। – Evan

0

डिफ़ॉल्ट मार्गों के साथ विशेषता रूटिंग मिश्रण करते समय मुझे एक ही समस्या थी। जब मैंने डिफ़ॉल्ट मार्ग हटा दिया तो समस्या दूर हो गई। नकारात्मक पक्ष परिभाषित डिफ़ॉल्ट मार्ग के बिना, मुझे अपने सभी नियंत्रकों को विशेषता रूटिंग जोड़ना पड़ा।

तो मेरी WebApiConfig से मैं हटाया:

config.Routes.MapHttpRoute(
    name: "DefaultApi", 
    routeTemplate: "{controller}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

और जोड़ा विशेषता मेरी नियंत्रक को मार्ग:

[Route("Session")] // Added this attribute 
public async Task<IHttpActionResult> Get() 
...  
[Route("Session/{id}")] // Added this attribute 
public async Task<IHttpActionResult> Get(int id) 

हकीकत में मैं अपने नियंत्रक पर एक [RoutePrefix("Session")] का उपयोग करें और मेरी विधियों पर [Route("")] उपयोग करें, लेकिन नतीजा वही होना चाहिए।

0

मुझे यह त्रुटि त्रुटि पैरामीटर नामों के कारण हो रही है जो विशेषता रूटिंग कथन और विधि हस्ताक्षर के बीच मेल नहीं खाते हैं।

[HttpGet("{id}")] 
public IActionResult Get(string deviceNumber){ 
... 

"{id}" से "{deviceNumber}" को बदलने के बाद यह त्रुटि को ठीक करता है।

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