J'ai rejoint une équipe développant une application ASP.NET MVC version 1. Je cours cette application sur ma machine locale en utilisant IIS version 7.5. Mon système d'exploitation est Windows Server 2008 R2 Enterprise Edition. J'utilise Visual Studio 2008 SP1 pour le développement.Problème de routage avec un nom de contrôleur particulier utilisant ASP.NET MVC 1 dans IIS 7
L'un des contrôleurs de cette application s'appelle ReportsController. Les entrées de la table de routage pour ce contrôleur utilisent 'Rapports' comme partie du nom du contrôleur. Le problème que j'ai, c'est que, en utilisant IIS 7.5 sur ma machine locale, je ne peux tout simplement pas accéder à l'une des méthodes d'action Reports. Si j'essaie d'accéder, disons, '/ Reports/Index' à partir de Chrome ou Firefox, j'obtiens une réponse non autorisée de 401 (comme vu en utilisant Fiddler) et le navigateur affiche sa boîte de dialogue d'entrée de nom d'utilisateur/mot de passe.
S'il vous plaît noter les éléments suivants:
- Toutes les autres pages non-rapport dans le travail d'application correctement.
- Si j'ajoute un point d'arrêt à Application_BeginRequest, il n'est pas activé lors de la demande d'une page Rapports.
- Si je modifie les entrées de routage de rapports dans le code d'enregistrement de la table de routage afin que je doive accéder à des chemins comme '/ Reportss/Index' (notez les 'extra'), ces pages de rapports fonctionnent correctement.
- J'ai essayé de supprimer puis de recréer mon application Web dans IIS.
- Les pages Rapports fonctionnent correctement si j'exécute l'application à l'aide du serveur de développement Visual Studio 2008 (Cassini).
- Il n'y a pas de répertoire appelé Reports dans le répertoire de l'application.
- Les pages Rapports fonctionnent correctement sur notre environnement UAT, également sous IIS 7.5.
- J'ai revu plusieurs fois mon paramètre IIS, notamment en le comparant à ceux de l'UAT, et je ne vois aucun problème.
Bien que je puisse utiliser Cassini pour accéder aux pages Rapports, je voudrais vraiment comprendre ce qui cause ce problème.
Avez-vous comparé les fichiers web.config? Des choses simples comme des modules http manquants ou dans le mauvais ordre peuvent provoquer des choses comme ça. Il peut y avoir un web.config dans votre dossier views, il peut être utile de vérifier que, basé sur un article, j'ai trouvé que cela pouvait être dû à des chemins sécurisés. http://haacked.com/archive/2008/06/25/aspnetmvc-block-view-access.aspx – Hawxby
rechercher tous les fichiers de votre solution pour un mot "rapports" ..peut-être que vous pourriez trouver du code qui fait quelque chose de spécial à ces routes ou à ce contrôleur (peut-être autoriser l'attribut quelque part, peut-être sur un contrôleur de base ou quelque chose de similaire). Les paramètres d'authentification sont également configurés dans web.config comme suggéré par Hawxby. – mare
Toutefois, comme il semble qu'il ne soit lié qu'à un seul Windows Server et à ses IIS, il peut s'agir de quelque chose dans IIS config. Il est possible que vous ayez un autre site ou répertoire virtuel qui fonctionne dans/Reports et que des paramètres spéciaux d'authentification/d'autorisation puissent être configurés. Un que je peux penser à MS SQL Server Reports Service .. – mare