2012-10-11 12 views
14

Come passare l'email come parametro alla fine dell'URL in API Web ASP.NET MVC?Come passare l'email come parametro alla fine dell'URL in API Web ASP.NET MVC?

come di seguito:

test.com/api/sales/getcustomerorders/[email protected] 

Voglio passare l'indirizzo di posta elettronica come parametro per l'azione getcustomerorders.

possiamo passare utilizzando la stringa di query. Ma voglio formattare l'url come sopra.

Grazie.

+0

devi codificare il segno @ nell'URL in quanto è un carattere riservato. Dovrebbe assomigliare a questo: test.com/api/sales/getcustomerorders/test%40test.com –

+0

Ho provato lo stesso url qui (con @) e funziona .. Cosa non va? – MuriloKunze

+0

È il DOT che è il problema. –

risposta

22

In WebApiConfig effettuare il percorso come "/ {email} /". La fine "/" ti impedirà di ottenere Nessuna risorsa HTTP trovata che corrisponda all'URI della richiesta ...

+1

Soluzione semplice e facile. Nessuna modifica alla configurazione o altro necessario. Grazie per la pubblicazione. –

+0

Questo mi ha salvato !! –

+1

Questo ha funzionato per me. Puoi spiegare perché questo funziona? Non lo capisco – spoof3r

4

Scott Hanselman lo copre in this blog post. In alternativa è possibile passare l'e-mail come parametro della stringa di query e non come parte del percorso poiché alcuni caratteri non sono consentiti.

8

Il problema qui è che si dispone di punto nell'URL.

Per farlo funzionare, ti cambia web config aggiungere dopo due configurazioni:

<configuration> 
    <system.web> 
    <httpRuntime relaxedUrlToFileSystemMapping="true" /> 
    </system.web> 
    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 
</configuration> 

Haacked ha un blog su relexUrlToFileSystemMapping http://haacked.com/archive/2010/04/29/allowing-reserved-filenames-in-URLs.aspx

e ho un bug su di esso in IIS Express 8 e necessiti di runAllManagedModulesForAllRequests: https://aspnetwebstack.codeplex.com/workitem/226

+0

Funziona ma se fai riferimento a [questo collegamento] (http://stackoverflow.com/questions/11048863/modules-runallmanagedmodulesforallrequests-true-meaning) rallenterà la tua app perché carichi tutto il modulo per tutte le richieste .. – davidlebr1

+0

solo runAllManagedModulesForAllRequests è necessario per consentire un indirizzo di posta elettronica poiché un periodo è utilizzato nell'URL – user2320464

Problemi correlati