Le format de requête n'est pas reconnu pour L'URL se terminant de manière inattendue dans' / Convert ' arrive après 1-2 jours

j'appelle un service Web en utilisant un Microsoft.Appel 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);
}

tout fonctionne bien quand je me souviens d'ajouter le protocole HttpPost dans le web local.config:

<?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>

mais sur un serveur de production il échoue après avoir fonctionné pendant 1-2 jours. Il fonctionne bien après le asp.net le procédé a été recyclé. Il fonctionne pendant 1-2 jours et puis il échoue avec ceci:

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: extranetkbk
Is authenticated: True
Authentication Type:
Thread account name: NT AUTHORITYNETWORK SERVICE

Thread information:
Thread ID: 14
Thread account name: NT AUTHORITYNETWORK 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)

pourquoi attend-IL 2 jours avant échec? Et que puis-je faire pour éviter qu'il ne parvient pas? Est-ce que cela a quelque chose à voir avec le fait que ce serveur tourne en mode HTTPS?

28
demandé sur Cid 2011-06-24 00:42:50

3 réponses

qu'est-Ce que la Dot Net framework? IIS 6 ou 7?

Avez-vous essayé d'ajouter <add name="HttpGet"/> dans la section Protocoles. Il semble que certaines personnes ont surmonté ce problème avec cette réparation. (mais pas pour tous)

lien 1

lien 2

Vérifiez également où vous déployez votre site. Est-il au niveau de la racine de votre serveur web ou un dossier virtuel. Parfois, il peut hériter certaines valeurs de configuration des sites ou de la machine au niveau parent.fichier de configuration.

sinon ça pourrait être lié à une fuite de mémoire dans votre code. Que faites-vous avec le XML chargé? Je suppose aussi que vous analysez un XML valide.

1
répondu Sabo 2017-05-23 10:31:09

il semble qu'il y ait un Hotfix disponible pour lors du recyclage de l'app pool fixe le problème pour quelques jours: http://support.microsoft.com/kb/2783777/en-us

1
répondu KdBoer 2013-10-09 09:51:30

il semble que les protocoles soient désactivés par défaut . Il y a une question similaire déjà répondu dans Stackoverflow. Cochez cette case lien et la question pertinente 151970920"

0
répondu Cid 2017-05-23 11:54:34