2009-07-08 8 views

Répondre

6

Vous devez créer un type MIME pour cette extension dans IIS:

Pour définir un type MIME pour une extension spécifique, procédez comme suit:

  1. Ouvrez la console de gestion IIS Microsoft (MMC) Cliquez avec le bouton droit sur le nom de l'ordinateur local, puis cliquez sur Propriétés.
  2. Cliquez sur En-têtes HTTP.
  3. Cliquez sur Types MIME.
  4. Cliquez sur Nouveau.
  5. Dans la zone Extension, tapez l'extension de nom de fichier souhaitée (par exemple, .axed)
  6. Dans la zone Type MIME, tapez application/octet-stream.
  7. Appliquez les nouveaux paramètres. Notez que vous devez redémarrer le service de publication World Wide Web ou attendre le recyclage du processus de travail pour que les modifications prennent effet. Dans cet exemple, IIS sert désormais les fichiers avec l'extension .axed.
+0

Non, ce n'est pas ça. J'ai le sentiment que le serveur supprime les paramètres querystring des fichiers .axd et .asmx car mes services web ne fonctionnent pas non plus. Quelqu'un est-il au courant de quelque chose qui empêcherait cela (non ce n'est pas le verbe manquant de l'extension car cela génère une erreur différente) – januszstabik

+0

Quelle version d'IIS exécutez-vous? – Alex

+0

Je pense que vous pourriez avoir un problème de permissions? Pouvez-vous voir autre chose sur ce serveur? .aspx? N'importe quoi? – Alex

2

Nous avons eu l'erreur 500 (ce n'est pas 404, mais qui sait) sur notre serveur de production il y a quelque temps. Aucune ressource de script n'a pu charger.

Le problème résidait dans la différence de temps entre nos serveurs de développement et de production. C'était -7 heures. .NET a lancé une exception car il essayait d'utiliser une "heure dans le futur" d'un assembly avec des ressources de script intégrées.

Diminuer le dossier {website}/bin/ (en fait, les assemblages y sont intégrés) la date de création par jour a résolu le problème.

+0

Merci pour la suggestion. J'aimerais tester ça. Quel outil avez-vous utilisé pour changer les horodatages? – itslittlejohn

+0

C'était en effet le problème pour nous, et obtenaient 404s. J'ai utilisé le démonte-date de Nirsoft. – itslittlejohn

0

Pouvez-vous faire une requête "défectueuse" qui échoue puis vérifier les journaux d'événements du système et de l'application du serveur?

Il existe plusieurs problèmes autour de axd qui peuvent provoquer des problèmes 404 ou 500 (comme le problème du "temps dans le futur" mentionné par Alex), mais ils laissent une empreinte dans le journal des événements.

Jetez un oeil et postez toutes les entrées de journal qui mentionnent des axds.

3

Vous pouvez vérifier les points suivants:

  1. Vérifiez dans la console de gestion IIS que l'extension .axd (l'extension du gestionnaire HTTP par défaut) est autorisé.
  2. Vérifiez également si la case à cocher "Vérifier si le fichier existe" est non cochée. Cet écran apparaît après avoir cliqué sur le bouton "Modifier" après avoir sélectionné l'extension axd.
  3. Vérifiez si le gestionnaire HTTP est correctement enregistré dans web.config. Il devrait également être dans la bonne section de configuration en fonction de la version d'IIS. Pour le mode IIS6 et IIS7 Classic, il devrait être en <system.web><httpHandlers>. Pour le mode intégré IIS7, il doit être enregistré au <system.webServer><handlers>.
15

si vous êtes sur IIS7 assurez-vous d'ajouter le gestionnaire à la section <system.webServer><handlers>:

<add name="MyName" path="MyName.axd" verb="*" type="NameSpace.Class, Assembly" /> 
4

Vérifiez que dans Request Filtering vous soit * ont .axd comme une extension admis, ou * ont Allow unlisted file name extensions coché en Modifier les paramètres de filtrage des demandes

Le même effet peut être obtenu avec la section web.config suivante:

<system.webServer> 
    <security> 
     <requestFiltering> 
      <fileExtensions> 
       <add fileExtension=".axd" allowed="true" /> 
      </fileExtensions> 
     </requestFiltering> 
    </security> 
</system.webServer> 
+0

Je voulais faire le contraire, donc c'était parfait (évidemment, je viens d'utiliser 'false' à la place de' true'). – Fenton

7

Dans mon cas, je transférais le projet à partir de .NET 2.0 en utilisant la conversion automatique. Le convertisseur a ajouté la section <system.webServer> et tous les gestionnaires et modules qui se trouvent dans le <system.web>. Cependant, pour chaque gestionnaire, il a ajouté l'attribut suivant: preCondition = "integratedMode, runtimeVersionv2.0" Une fois que j'ai supprimé l'attribut, les 404 s'arrêtaient et le gestionnaire commençait à fonctionner.

+0

Merci de m'avoir sauvé une quantité de temps inconnue, mais probablement significative! – bentayloruk

0

J'ai ajouté un attribut runAllManagedModulesForAllRequests = "true" dans modules .. nœud de la section system.webServer, les 404s arrêté et gestionnaire a commencé à travailler.

0

Si cela peut aider quelqu'un, j'ai eu le même problème, peu d'entre nous ont passé 2 jours. Sur 3 serveurs, tout s'est bien passé et tout aussi bien sur le développement mais sur ce serveur 404 non stop. La solution, j'ai changé poold d'intégré à classique et cela a fonctionné

Questions connexes