IIS renvoie 404 pour ASP.NET MVC3 fichier (.cshtml)
J'ai norme ASP.NET 4 domaine d'application. Dans cette application, il y a également peu de rasoir (par exemple test.cshtml
) des fichiers. ASP.NET l'application fonctionne cependant si je le navigateur de points de /test
fichier (sans l'extension). IIS (gestionnaire de fichier statique) retourne 404.
La même application et la même autonome .cshtml
fichiers de travail sur la machine locale (avec IIS7.5/Win7) et d'un serveur (IIS7.5/Win2008R2), mais il ne fonctionne pas le serveur IIS7.0/Win2008.
MVC3 est installé sur les deux machines, les pools d'application sur les deux machines .NET 4.0 intégrée.
Comment le .cshtml
gestionnaires d'œuvres? Lorsque IIS décide d'utiliser le gestionnaire de fichier statique et lorsque le .cshtml
gestionnaire? Que dois-je vérifier?
EDIT:
Précisions - je ne suis en fait pas entier en utilisant les framework MVC, il est juste comme la plaine-vieux .ASPX ou fichier PHP. Pas de contrôleurs, pas de routes, pas de "vues". Je suis à l'aide d'un simple script en plus vieux ASP.NET application.
Je pense que ce n'est pas un problème de programmation, car il fonctionne sur l'ordinateur local, mais plutôt un problème de configuration - IIS sur le Win2008 serveur peut-être pas configuré correctement.
EDIT2:
(Machines avec IIS7.5 œuvres, seulement la machine avec IIS7.0 ne fonctionne pas. Mais je ne suis pas sûr de savoir si c'est un problème de IIS version.)
EDIT3:
Sur mon ordinateur local où elle travaille, je n'ai pas mis de routage. TheCodeKing et Keith a suggéré que j'ai besoin d'avoir un routage quelque part. Peut-être que oui, mais il n'est pas dans mon application. Elle peut être définie par défaut quelque part dans la configuration d'IIS.
Avez-vous des conseils où cette "implicites" de routage peut être trouvé?
EDIT4:
Remarque: Sur tous les ordinateurs, il est HttpForbiddenHandler
pour *.cshtml
, puisque vous ne pouvez pas télécharger le cshtml fichier. Et il y a aussi le TransferRequestHandler
pour *.
. (Les deux sont activés.)
EDIT5:
J'ai trouvé que sur les serveurs, où il est au travail, j'ai besoin d'avoir tout .cshtml
fichier dans la racine du site web. Si je supprime le .cshtml
à partir de la racine du site web et d'essayer de se prévaloir de tout à partir d'un sous-répertoire, il ne fonctionnera pas.
EDIT6:
J'ai essayé sur deux autres machines: l'une avec IIS 7.5
et un autre avec IIS 7.0
. Sur IIS 7.5
il fonctionne (plaine d'installation aucune configuration), mais sur IIS 7.0
il ne fonctionne pas.
Comment le faire fonctionner sur IIS 7.0?
Voir aussi stackoverflow.com/questions/4942634/...
Car il n'est pas " vue " un exemple d'application MVC, mais plutôt un simple script.
Dans IIS 7, pour votre site, avez-vous vérifié la
Handler Mappings
*.cshtml?Voir ma réponse dans EDIT4.
OriginalL'auteur TN. | 2011-09-09
Vous devez vous connecter pour publier un commentaire.
Yay!!! Après plusieurs jours de galère, j'ai trouvé! :))
Une façon de le faire fonctionner sur IIS 7.0 est de permettre
runAllManagedModulesForAllRequests
:(Bien que, sur IIS 7.5 il fonctionne même avec la valeur par défaut
runAllManagedModulesForAllRequests="false"
.)Ne me demandez pas pourquoi:) Peut-être que quelqu'un peut expliquer cela.
+1 Merci, je savais que plus tôt:)
OriginalL'auteur TN.
Ne sais pas si cela est votre problème particulier, mais il semble que ASP.NET des Pages Web n'est pas en cours d'exécution (MVC 3 et dépendent des Pages Web pour une lame de Rasoir et d'autres choses). Parfois, les choses peuvent s'installer dans les ordres que gâcher un peu de configuration de ASP.NET et IIS, ce qui pourrait faire en sorte de Pages Web n'est pas en cours d'exécution et ne cshtml fichier sera exécuté.
Essayez d'exécuter aspnet_regiis /i pour tout nettoyer.
aspnet_regiss /i
(par .NET 4), mais il n'aide pas (comme il vient d'registres ASP.NET, j'ai aussi réinstallé ASP.NET MVC3.Plus précisément
C:\Windows\Microsoft.NET\Framework\v4.0.30319>aspnet_regiis -i
OriginalL'auteur Erik Porter
Il y a un correctif pour IIS7.0 disponible à: http://support.microsoft.com/kb/980368
Je l'ai installé aujourd'hui sur windows 2008 SP2 (qui nécessite un OS redémarrez-le).
Le comportement dans IIS 7.0 est maintenant semblable à IIS 7.5
Il fixe le problème de mon côté, sans forcer:
C'est une meilleure approche que l'exécution de tous les modules pour toute demande (même sur css/images/...) qui serait la cause de surcharge inutile.
OriginalL'auteur Gilles
Êtes-vous sûr que IIS dispose des autorisations suffisantes pour accéder au fichier dans le dossier /test?
Ce qui pourrait causer certaines questions stupides que j'ai trouvé.
OriginalL'auteur Frank Allenby
Si c'est un asp.net 4.0 application web, vous aurez besoin de configurer manuellement les routes, créer le contrôleur approprié(s), et assurez-vous que votre point de vue (.cshtml fichiers) existent réellement dans le /Vues/ControllerName dossier.
Je vous recommande aussi la configuration de votre projet pour utiliser IISExpress dans votre environnement de développement pour mieux correspondre à votre serveur web. Il est d'une grande aide lors du débogage de ces sortes de questions.
configuration de votre environnement de développement pour utiliser IIS Express ne correspond pas à votre serveur web. Vous allez être en cours d'exécution IIS sur votre serveur web - PAS de IIS Express
Ce commentaire a été à partir de 6 ans, lorsque VS2010 était à la mode, et de la sonde Cassini a la valeur par défaut. Beaucoup de problèmes (tels que le web.de configuration) qui n'ont pas été trouvés sur Cassini, mais ont été sur votre serveur IIS de Production, étaient BEAUCOUP plus susceptibles d'être répliquées dans IIS Express.
OriginalL'auteur Keith
Que vous n'êtes pas en utilisant MVC, vous devrez configurer le routage, ou la réécriture de l'aide de IIS module de réécriture d'attendre
/test
résoudre à/test.cshtml
. Vous n'obtiendrez pas ce comportement sans elle.par exemple, quelque chose comme ça dans votre démarrage de l'application.
Donc, avez-vous le programme d'installation de routage? Comment êtes-vous cartographie de l'extension-moins url de
.cshtml
? Peut-être que vous pourriez montrer un peu de code? Quelles sont les versions de IIS travail, ce qui ne l'est pas? Sont-ils tous les mêmes?Pas de routage. Essayez de créer un simple ASP.NET application dans IIS un lieu de test.cshtml fichier à l'intérieur (par exemple, "hi" à l'intérieur). Point de navigateur de fichier (sans .cshtml extension).
Si je crée un nouveau ASP.NET les formulaires d'application, créer
test.cshtml
et demande/test
j'obtiens une erreur 404. Si j'ai essayer /test.cshtml tout naturellement que je reçois ce type de fichier ne peut pas être servi. Nous avons besoin de savoir comment vous avez mis en place le routage pour la.cshtml
. C'est la clé de votre problème. Vous avez parlé d'un simple script?Avec le script que je veux dire
test.cshtml
fichier. Le contenu pourrait être juste "Le temps est @DateTime.Maintenant.". Voir EDIT3.OriginalL'auteur TheCodeKing
cshtml peut fonctionner, si vous définissez un site web.conf.
Vous pouvez penser que c'est du html, mais avec la syntaxe razor.
OriginalL'auteur avatas