consumir c# asp.net asp.net-mvc-4 asp.net-web-api

c# - consumir - El método WebApi con parámetro de dirección de correo electrónico devuelve 404 de HttpClient



post web api c# (4)

Agregar lo siguiente a web.config no debería corregir el problema completo:

<system.webServer> <modules runAllManagedModulesForAllRequests="true" /> </system.webServer>

La solución ya no funciona ya que un segmento de ruta extra se usa en la uri para mí. https://localhost:xxxx/[email protected] funciona

https://localhost:xxxx/path/[email protected] no funciona

Busco por Google y entendí que es una extensión. (.cs da un error diferente como .com) y finalmente encuentra esto: ASP.net MVC4 Ruta WebApi con nombre de archivo en ella

Mi solución fue agregar o cambiar el siguiente controlador en la sección <handlers> de su <system.webServer> :

<remove name="ExtensionlessUrlHandler-Integrated-4.0" /> <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*.*" verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

o cambie el camino a path=*@*.*

Tengo un controlador WebApi con un método que se ve así:

[HttpGet] [AcceptVerbs("GET")] public HttpResponseMessage Run(string reportName, int someId, string someText, DateTime asOfDate, string username)

Tengo una ruta personalizada configurada específicamente para esta acción. Cuando navego por mi navegador hacia el servicio web, todo funciona bien y se ejecuta la acción adecuada:

http://localhost:xxxx/ControllerName/Run/asdf/1/asdf/07-01-2012/[email protected]

Sin embargo, cuando intento llamar programáticamente el servicio web utilizando HttpClient y ejecutar un "Obtener" obtengo un error 404. No obtengo un error cuando el parámetro de nombre de usuario no es una dirección de correo electrónico. Por ejemplo, cuando el nombre de usuario es solo "usuario" todo funciona bien. Aquí está el código de ejemplo:

var url = "http://localhost:xxxx/ControllerName/Run/asdf/1/asdf/07-01-2012/[email protected]" var client = new System.Net.Http.HttpClient(); var response = client.Get(url); //fails here with 404 error response.EnsureSuccessStatusCode();

He intentado UrlEncoding la dirección de correo electrónico sin suerte. Cualquier consejo es apreciado.


Esto se debe a que IIS está tratando de asignar caracteres especiales. Agregar lo siguiente a web.config debería solucionar el problema:

<system.webServer> <modules runAllManagedModulesForAllRequests="true" /> </system.webServer>

Más información aquí: http://www.iis.net/configreference/system.webserver/modules


Necesitas una consulta URL básica.

[Route("api/emails")] public HttpResponseMessage Run(string email) {...} GET api/[email protected]


Solo un pensamiento rápido ... ¿podría el ".com" estar causando el problema?