asp.net - El servicio ASMX funciona en el servidor de desarrollo, devuelve 404 cuando se implementa en IIS 7.5
iis-7 (4)
Acabo de encontrar el mismo error, después de tropezar con esta entrada SO:
Los manejadores devuelven el error 404 en la canalización integrada IIS7.5 y
y probé la solución de agregar el controlador asmx a la sección web.configs webServer:
<system.webServer> <validation validateIntegratedModeConfiguration="false"/> <modules runAllManagedModulesForAllRequests="true"/> <handlers> <add verb="*" path="*.asmx" name="asmx" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> </handlers> </system.webServer>
Tengo una aplicación web en ASP.NET 4.0. He agregado un servicio asmx, principalmente como fuente para los valores de búsqueda del extensor de autocompletado.
Cuando depuro en mi máquina localmente, todo funciona bien. Sin embargo, cuando implemento la aplicación web en IIS 7.5, obtengo una respuesta HTTP 404 cuando intento enviar datos al servicio.
Puedo navegar a la definición de servicio, ver las operaciones disponibles. Sin embargo, de manera reveladora, cuando uso las páginas de prueba para probar el servicio mediante POST, recibo un HTTP 404 nuevamente.
No estoy seguro de lo que está pasando. Creé el archivo asmx dentro de mi aplicación web y se implementa en el directorio virtual de mi aplicación de producción que funciona de otra manera.
¿Hay algún problema con el archivo .asmx que se implementa en el mismo directorio virtual, tal vez?
Debe comprobar el grupo de aplicaciones para el servicio web:
- ¿Está configurado para usar la versión correcta de .NET?
- Comprobar la identidad
- Compruebe el modo de tubería administrada; algunas aplicaciones requieren Classic para ser utilizado
En Asp.net MVC RouteConfig.cs
no puede tener esta línea:
routes.RouteExistingFiles = true;
Eso me estaba lanzando error http 404 .
Estaba publicando en asmx con jQuery y funcionó en sistemas de prueba, pero falló en el servidor de producción. Me faltaba el parámetro del tipo de datos:
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({
//Data goes here
}),
dataType: "json", //<<<<<<<<< This is critical for the post to succeed in production. Without it we get a 404.
url: "/yourPathHere/yourEndpoint.asmx/methodName",
error: function (jqxhr, status) {
//error handler
},
success: function (data, status) {
//succes handler
}
});