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 hay un Hotfix disponible para cuando el reciclaje del grupo de aplicaciones soluciona el problema por unos días: http://support.microsoft.com/kb/2783777/en-us