2011-02-05 3 views
6

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.

+0

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

+0

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

+0

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

Répondre

11

Si Reporting Services est installé sur votre ordinateur. essayez de créer un nouveau site Web et utilisez-le. Si SSRS est installé sur votre ordinateur, il utilise/reports pour l'hébergement des rapports.

+3

Un grand merci @Cengiz, et @mare et @Sean - Reporting Services était le problème. J'ai corrigé cela en accédant au Gestionnaire de configuration de Reporting Services et en changeant le nom de l'en-tête de l'hôte sur l'URL du Gestionnaire de rapports (qui est le chemin vers le répertoire Reports problématique). – stevejay

+0

+100 - ce fut une aide énorme. J'ai suivi la procédure ici et changé le port à 801 - http://bretstateham.com/fixing-sql-server-reporting-services-ssrs-2008-url-reservations-on-windows-7/ –

1

J'ai rencontré des problèmes lors de l'utilisation du nom de répertoire 'Reports' à la racine d'un site Web .net 2.0 sur IIS 7.5. Il génère une erreur 503, indiquant qu'il existe une erreur au niveau du système avant que IIS ne tente de diffuser la page. Je ne suis pas sûr si les services de rapports sont installés sur mon serveur. Je viens de changer le nom du répertoire, tous les liens et tout a fonctionné.

0

J'ai exactement le même problème dans mon application MVC avec les services de création de rapports installés sur le même serveur où le code a été déployé. J'ai changé l'URL de Reporting Manager dans "Configuration de SQL Server Reporting Services" qui était hostName/Reports et affecté un nouveau nom, c'est-à-dire SSRSReports, de sorte que le répertoire virtuel soit maintenant hostName/SSRSReports.

Maintenant, mon application ainsi que les rapports SSRS fonctionnent comme prévu.