Wenn ich auf die Swagger-URL: http://localhost:28483/swagger/ui/index
zugreifen, wird dieser Fehler generiert:
500 : undefined http://localhost:28483/swagger/docs/v1
Irgendwelche Ideen?
UPDATED: Siehe Detailfehler in Firebug:
Not supported by Swagger 2.0: Multiple operations
with path 'api/BimModel' and method 'GET'. See the config setting - \"ResolveConflictingActions\" for
a potential workaround
Swagger betrachtet möglicherweise zwei Aktionen als eine Operation (wie in diesem üblichen Szenario) ...
GET api/Products
GET api/Products/{id}
Es scheint, dass Sie attribute routing verwenden können, um dies zu beheben und diese Attribute über Ihren Aktionen zu verwenden, damit swagger sie separat erkennt.
[Route("api/Products")]
[Route("api/Products/{id:guid}")]
Haben Sie versucht, dies in Ihrer Swagger-Konfiguration zu aktivieren?
c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
Im Controller wurden zwei verschiedene GET-Operationen ausgeführt, die von Swagger nicht zugelassen werden. Ich schlage vor, entweder nur eine einzelne GET-Operation für jeden Controller auszuführen oder den Router in WebApiConfig zu ändern
Ich hatte das gleiche Problem beim Mischen von Attributrouting mit Standardrouten. Wenn ich die Standardroute entfernte, ging das Problem weg. Der Nachteil ist, ohne die definierte Standardroute musste ich allen meinen Controllern Attributrouting hinzufügen.
Also habe ich aus meiner WebApiConfig entfernt:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Und fügte Attributrouting zu meinem Controller hinzu:
[Route("Session")] // Added this attribute
public async Task<IHttpActionResult> Get()
...
[Route("Session/{id}")] // Added this attribute
public async Task<IHttpActionResult> Get(int id)
In Wirklichkeit verwende ich eine [RoutePrefix("Session")]
auf meinem Controller und verwende [Route("")]
für meine Methoden, aber das Ergebnis sollte das gleiche sein.
Dieser Fehler wurde angezeigt, da die Parameternamen nicht zwischen der Attribut-Routing-Anweisung und der Methodensignatur übereinstimmen.
[HttpGet("{id}")]
public IActionResult Get(string deviceNumber){
...
Nach dem Ändern von "{id}" in "{Gerätenummer}" wurde der Fehler behoben.