ejemplos desde consumir asp.net web-services https xmlhttprequest asmx

asp.net - desde - El formato de solicitud no se reconoce porque la URL que termina inesperadamente en ''/ Convertir'' ocurre después de 1-2 días



soap javascript ejemplos (3)

Llamaré a un servicio web usando una llamada de Microsoft.XMLHTTP:

var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp.open("POST", "/xxx/Converter.asmx/Convert", false); xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xmlhttp.send("conversionFolder=" + escape(conversionFolder)); if (xmlhttp.status == 200) { xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async = "false"; xmlDoc.loadXML(xmlhttp.responseText); ... more stuff ... return str; } else { alert(xmlhttp.statusCode + " - " + xmlhttp.statusText); }

Todo funciona bien cuando recuerdo agregar el protocolo HttpPost en el web.config local:

<?xml version="1.0"?> <configuration> <appSettings/> <connectionStrings/> <system.web> <webServices> <protocols> <add name="HttpPost"/> </protocols> </webServices> <compilation debug="false"></compilation> </system.web> <system.codedom> </system.codedom> <!-- The system.webServer section is required for running ASP.NET AJAX under Internet Information Services 7.0. It is not necessary for previous version of IIS. --> <system.webServer> </system.webServer> </configuration>

Pero en un servidor de producción falla después de ejecutarse durante 1-2 días. Funciona bien después de que el proceso asp.net ha sido reciclado. Funciona durante 1-2 días y luego falla con esto:

Exception information: Exception type: InvalidOperationException Exception message: Request format is unrecognized for URL unexpectedly ending in ''/Convert''. Request information: Request URL: https://xxx/xxx/converter.asmx/Convert Request path: /xxx/converter.asmx/Convert User host address: 195.50.35.4 User: extranet/kbk Is authenticated: True Authentication Type: Thread account name: NT AUTHORITY/NETWORK SERVICE Thread information: Thread ID: 14 Thread account name: NT AUTHORITY/NETWORK SERVICE Is impersonating: False Stack trace: at System.Web.Services.Protocols.WebServiceHandlerFactory.CoreGetHandler(Type type, HttpContext context, HttpRequest request, HttpResponse response) at System.Web.Services.Protocols.WebServiceHandlerFactory.GetHandler(HttpContext context, String verb, String url, String filePath) at System.Web.Script.Services.ScriptHandlerFactory.GetHandler(HttpContext context, String requestType, String url, String pathTranslated) at System.Web.HttpApplication.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

¿Por qué espera 2 días antes de fallar? ¿Y qué puedo hacer para evitar que falle? ¿Tiene algo que ver con el hecho de que este servidor se ejecuta en modo HTTPS?


¿Cuál es el marco de Dot Net? IIS 6 o 7?
¿Has intentado agregar <add name="HttpGet"/> en la sección de protocolos? Parece que algunas personas han superado este problema con esa solución. (pero no para todos)
enlace 1
enlace 2
También verifique dónde está implementando su sitio. Está en el nivel raíz en su servidor web o en una carpeta virtual. A veces puede heredar algunos valores de configuración de los sitios de nivel primario o del archivo machine.config.

De lo contrario, podría estar relacionado con alguna pérdida de memoria en su código. ¿Qué haces con el XML cargado? También supongo que está analizando un XML válido.



Parece que los protocolos están deshabilitados por defecto . Ya hay una pregunta similar respondida en . Mira este link y la pregunta relevante