2012-10-11 67 views
14

¿Cómo pasar el correo electrónico como parámetro al final de la URL en ASP.NET MVC web API?¿Cómo pasar el correo electrónico como parámetro al final de la URL en ASP.NET MVC web API?

, como a continuación:

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

Quiero pasar la dirección de correo electrónico como un parámetro a la acción getcustomerorders.

podemos pasar usando cadena de consulta. Pero quiero formatear la url como arriba.

Gracias.

+0

tiene que codificar el signo @ en la URL ya que es un carácter reservado. Debería verse algo como esto: test.com/api/sales/getcustomerorders/test%40test.com –

+0

Intenté la misma URL aquí (con @) y funciona ... ¿Qué está pasando? – MuriloKunze

+0

Es el DOT el problema. –

Respuesta

22

En WebApiConfig haga la ruta como "/ {email} /". El final "/" le impedirá obtener No se encontró ningún recurso HTTP que coincida con el URI de solicitud ...

+1

Solución fácil y simple. Sin cambios de configuración ni nada más necesario. Gracias por publicar. –

+0

¡Esto me salvó! –

+1

Esto funcionó para mí. ¿Puedes explicar por qué funciona esto? No lo entiendo – spoof3r

4

Scott Hanselman cubre esto en this blog post. Como alternativa, podría pasar el correo electrónico como un parámetro de cadena de consulta y no como parte de la ruta, ya que ciertos caracteres no están permitidos.

8

El problema aquí es que tiene un período en la url.

Con el fin de hacer que funcione, cambie usted web.config para agregar siguientes dos configuraciones:

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

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

y tengo un fallo al respecto en IIS Express 8 y necesita el runAllManagedModulesForAllRequests: https://aspnetwebstack.codeplex.com/workitem/226

+0

Funciona, pero si se refiere a [este enlace] (http://stackoverflow.com/questions/11048863/modules-runallmanagedmodulesforallrequests-true-meaning) ralentizará su aplicación porque carga todo el módulo para todas las solicitudes. – davidlebr1

+0

solo runAllManagedModulesForAllRequests es necesario para permitir una dirección de correo electrónico, ya que se utiliza un período en la URL – user2320464

Cuestiones relacionadas