7
votes

Comment prévenir les messages d'erreur pour WeBresource.Axd Erreurs d'apparaître dans le journal des applications?

Je suis exécuté une application Web ASP.NET sous IIS 7.5 et mon journal d'application est plein d'erreurs comme ceci:

code d'événement: 3012 p>

Message d'événement: une erreur s'est produite dans le traitement d'une ressource Web ou de script demande. L'identifiant de ressource a échoué à déchiffrer. p>

... p>

Informations d'exception: P>

void Application_Error(object sender, EventArgs e)
{
  // Code that runs when an *unhandled* error occurs
  //// get reference to the source of the exception chain
  Exception ex = Server.GetLastError();
  string message = ex.Message;
  string path = Request.Path;
  // ignore the following:
  //   errors due to bots trying AXD URLs
  //   errors due to <doNastyThings /> tags in the URLs
  if (
    (ex is HttpException && (path.StartsWith("/WebResource.axd") || path.StartsWith("/ScriptResource.axd"))) ||
    (ex is HttpException && message.StartsWith("A potentially dangerous Request.Path value was detected from the client"))
    )
  {
    // clear the error *to prevent it from appearing in the main Application log*
    Server.ClearError();
    // need to manually direct to the error page, since it will no longer happen automatically once the error has been cleared
    Response.Redirect("/Error");
  }
}


2 commentaires

On dirait que la webresource.axd est directement demandée sans le SSL. Avez-vous trouvé une solution?


@Querveeser: Je ne l'ai pas fait, non - j'ai appris à vivre avec ça :(


3 Réponses :


2
votes

/weebresource.axd est généralement demandé car une page contient un lien avec elle, souvent un IMG SRC:

<img ... src="/WebResource.axd..." />


3 commentaires

Merci d'avoir répondu, Joe. Cependant, sur mon site, il n'y a pas de référence explicite à webresource.axd (ni aucun autre fichier AXD) sur une page; Les seuls endroits que la chaîne "webresource.axd" existe est le fichier global.asax, le fichier web.config et quelques fichiers tiers .js (écrit par Telerik). J'ai plutôt pensé que c'était un bot demandant au hasard des ressources. En effet, si je mets directement l'URL Webresource.Axd en moi, mon code écrit toujours l'erreur sur le journal des applications. C'est la chose que je veux éviter!


@EdGraham - "Il n'y a pas de référence explicite à webresource.axd ..." - Oui, mais si vous trouvez la page juste avant la demande .AXD, vous pourrez examiner ce qu'il est sur la page qui la demande. Par exemple. La page peut avoir l'un des fichiers de la tierce partie .js qui le demandent à tort. Je serais surpris de voir une demande valide pour cela dans un fichier statique .js, car je ne vois pas comment le fichier .js saura comment générer une requête valide. Avec Fiddler et éventuellement insérant des instructions d'alerte dans les fichiers .JS, vous devriez être en mesure de déterminer exactement où la demande incriminée est générée.


Merci encore, Joe - mais nous nous manquons du point. Je n'essaie pas d'éliminer la demande de webresource.axd; J'essaie d'empêcher l'erreur résultante d'être écrite au journal de l'application. Je me demande si je peux modifier global.asax ou modifier le fichier web.config d'une manière utile pour y parvenir.



8
votes

Je n'obtiens que cette erreur lorsque je reçois des demandes au cofreur Bingbot. Vous pouvez vérifier si c'est le bot ici

donc j'ai ajouté cela dans mon Fichier robots.txt. Cela ne fonctionne pas si vous n'ajoutez pas spécifiquement que c'est le bingbot utilisateur utilisateur xxx


3 commentaires

Nice - merci beaucoup pour ça. En fait, c'était l'araignée Baidu: même solution, cependant!


En fait, il s'avère que Baidu n'obéit pas robots.txt donc je l'ai donc bloqué dans le fichier web.config.


Bing Bot n'obéit pas non plus aux robots.txt, alors quelle utilisation des robots.txt que?



2
votes

Ces erreurs peuvent être causées lorsque Bingbot fait quelque chose de vraiment stupide et de baisse l'URL qu'il demande.

Je ne sais pas trop pourquoi cela fait cela, mais l'URL répertoriée dans le journal des événements est en fait liée à partir des personnes concernées. Page - Seulement avec quelques lettres majuscules! Par exemple, le lien réel dans le HTML: xxx

même lien que demandé par bingbot: xxx

oh bien .. . Ce sont des erreurs clairement inutiles à ignorer ou à supprimer.


0 commentaires