2010-10-18 7 views
2

Nous avons un fichier web.config dans un sous-répertoire physique d'un répertoire virtuel qui se trouve sous une application dans un site IIS. Quelque chose comme ceci:Web.config dans un sous-répertoire ignoré

  • Site
    • App
      • Web.config
      • virtuel Dir
        • Subdir
          • Web.config

Dans le web.config nous avons mis cette configuration dans system.web:

<webServices> 
    <protocols> 
    <add name="HttpPost" /> 
    <add name="HttpGet" /> 
    </protocols> 
</webServices> 

Nous permettons aux deux protocoles pour un ASMX dans ce sous-répertoire.

Tout fonctionne bien pendant un certain temps et après cela, il s'arrête juste et ces protocoles ne fonctionnent plus. Nous redémarrons IIS et il recommence à fonctionner. Pour résoudre ce problème, nous avons utilisé une solution de contournement pour ajouter cette configuration à l'application Web.config, puis cela fonctionne correctement. Mais nous aimerions éviter de changer l'application Web.config et de faire fonctionner le sous-répertoire Web.config.

Des idées pour lesquelles ASP.Net arrêterait juste de considérer le sous-répertoire Web.config après un certain temps?

Nous hébergeons sur Windows Server 2003, IIS 6, ASP.Net 2.0.

Les requêtes HTTP POST envoyées à l'ASMX ne fonctionnent plus. L'erreur que nous obtenons est System.InvalidOperationException avec ce message:

Le format de la requête n'est pas reconnu pour l'URL se terminant de manière inattendue dans '/ blah'.

La trace de la pile est:

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.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig) 
at System.Web.HttpApplication.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 
+0

J'ai édité la question pour inclure le message d'exception et la trace de pile pour la requête HTTP POST après que le service commence à échouer –

+0

Aussi, oublié de mentionner que j'ai réellement utilisé .Net Reflector pour regarder le code .Net et trouvé cette exception particulière jeté quand il pense que HTTP POST n'est pas autorisé. –

+0

Bonjour, j'ai exactement le même problème .... avez-vous eu une solution? Merci! –

Répondre

0

Il est peu probable que publierez sont vraiment ignoré par intermittence.

Que fait votre ASMX? Si vous allouez et ne libérez pas une ressource - comme une connexion à un autre service ou un objet WCF - ou si vous entrez une tâche de longue durée, IIS peut cesser de répondre aux demandes lorsque ces ressources sont épuisées. Cela expliquerait en redémarrant IIS résout le problème.

N'obtenez-vous aucune réponse, une erreur 500, ou quoi? Quelque chose dans le journal des événements?

+0

Le service est rapide et ne contient aucune ressource. –