all. Sto cercando di documentare un WebApi 2 usando il pacchetto Swashbuckle.Come posso creare un percorso url in Swashbuckle/Swaggerwork quando api viene servita da un altro progetto?
Tutto funziona alla grande se l'API è in esecuzione da solo vale a dire localhost/api/spavalderia mi porta a UI e localhost/api/spavalderia/docs/v1 a JSON.
Tuttavia, l'app di produzione inizializza questo stesso progetto Webapi eseguendo il metodo webapiconfig di questo progetto da global.asax.cs in un altro - ora progetto web (quello principale dell'applicazione). Quindi l'URL api è simile a localhost/web/api invece di localhost/api.
Ora lo swashbuckle non funziona affatto.
- localhost/api/swagger genera errore non può caricare 'API.WebApiApplication', ben naturalmente
- localhost/web/spavalderia = 404
- localhost/web/api/spavalderia = 404
Ho provato a cercare ovunque, ma tutto ciò che ho trovato è una soluzione.
c.RootUrl(req => req.RequestUri.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute("~/").TrimEnd('/'));
Purtroppo non funziona, ora forse dovrebbe e ho solo bisogno di cambiare qualcosa, ma io non so nemmeno cosa esattamente questa proprietà si aspetta e quello che dovrebbe essere impostato.
Potrebbe non essere nemmeno applicabile - forse l'installazione richiede qualcos'altro o alcune modifiche al codice dello swashbuckle.
Apprezzerò qualsiasi aiuto tu possa fornire. Sto davvero cominciando ad apprezzare lo spavaldo (e lo swashbuckle) per la documentazione di riposo.
Questo articolo github è stato il primo che ho letto, l'ultimo commento è esattamente dove ho ottenuto il codice che ho inserito nella mia domanda. Non ha funzionato. Mi piacerebbe provarlo nel modo in cui descrivi, perché almeno ora vedo ciò che è previsto come valore. Ma il codice che hai fornito non funziona così com'è. VS si lamenta di SwaggerSpecConfig come indefinito. Puoi fornire il codice completo e una versione di swashbuckle con cui funziona questo codice? Per favore. – Dmitriy
@ user1803063 Vedere il mio aggiornamento. Sto usando Swashbuckle.Core 4 con alcune estensioni non correlate. Guardando Swashbuckle 5, sembra che questa funzione per l'url di base sia stata ripulita un po 'e resa più facile da trovare e utilizzare. Non preoccuparti di SwaggerSpecConfig e 'ResolveBasePathUsing' se stai usando 5, è stato sostituito con il metodo di estensione httpConfiguration' EnableSwagger'. Mi dispiace per la confusione, non ho ancora bisogno di aggiornare a 5 e questo sembrava un problema molto simile che ho avuto prima. :) –
Sfortunatamente non funziona. Sto iniziando a pensare che potrebbe essere un bug. Ho provato a mettere tutto in RootUrl http: // localhost, http: // localhost/web e http: // localhost/web/api genera ancora 404 per me. – Dmitriy