sto cercando di ottenere i seguenti (e simili) gli URL per lavorare nel mio progetto/WebAPI ASP.net MVC4:percorso ASP.net MVC4 WebAPI con nome-file in esso
http://127.0.0.1:81/api/nav/SpotiFire/SpotiFire.dll
Il percorso responsabile per questo URL è il seguente:
config.Routes.MapHttpRoute(
name: "Nav",
routeTemplate: "api/nav/{project}/{assembly}/{namespace}/{type}/{member}",
defaults: new { controller = "Nav", assembly = RouteParameter.Optional, @namespace = RouteParameter.Optional, type = RouteParameter.Optional, member = RouteParameter.Optional }
);
Funziona bene se rimuovo il file. nel nome del file, o se aggiungo una barra dietro l'URL, ma ciò significa anche che non posso usare i metodi Url.Route
ecc. L'errore che ottengo è un errore 404 generico (immagine sotto).
Ho provato ad aggiungere <httpRuntime targetFramework="4.5" relaxedUrlToFileSystemMapping="true" />
al mio web.config, e ho anche provato ad aggiungere
<compilation debug="true" targetFramework="4.5">
<buildProviders>
<remove extension=".dll"/>
<remove extension=".exe"/>
</buildProviders>
</compilation>
E nessuno di esso sembra funzionare. Quindi la mia domanda è fondamentalmente, come posso far funzionare questo URL e mapparlo correttamente?
Solo l'ultima parte di un percorso può essere facoltativa. Nell'esempio che hai mostrato hai fatto tutti i parametri del percorso tranne il progetto opzionale che ovviamente non è possibile. Inoltre nell'URL hai mostrato che mancano porzioni 'namespace' e' type' dell'URL. Solo la porzione 'member' può essere opzionale perché è definita alla fine del percorso. –
Questo non è vero, e ha dimostrato di funzionare senza problemi. Puoi avere tutte le parti opzionali che vuoi. Per esempio, anche prima della modifica che ho appena fatto nella mia risposta, l'url '/ api/nav/SpotiFire' ha funzionato come un incantesimo. – Alxandr