2010-08-20 4 views
3

J'ai une action de contrôleur portant le même nom qu'un chemin de fichier. Comme:Chemin d'accès et chemin d'accès du fichier ASP.NET MVC

www.example.com/userfiles/path/to/userfile.jpg 

Fondamentalement, j'ai un contrôleur userfiles et sur le tout action index après userfiles/est un chemin. Il y a aussi un répertoire virtuel userfiles à la racine de mon application. Ce que je veux faire, c'est que si le répertoire qui suit userfiles/(dans ce cas path) n'existe pas dans le répertoire virtuel userfiles, alors utilisez l'action index sur userfilesController si le répertoire existe, puis utilisez le chemin tel qu'il est .

Cela a fonctionné parfaitement sur ma machine Windows XP dev devint iis 5. Mais, une fois que je l'ai déplacé sur le serveur live (Windows Server 2003 iis 6), j'obtiens une erreur 404 comme si le chemin n'existe pas plutôt que d'aller à l'action d'index du contrôleur userfiles.

Dans les routes fichier je:

routes.MapRoute(
    "Userfiles",          // Route name 
    "userfiles/{*url}",        // URL with parameters 
    new { controller = "Userfiles", action = "Index" } // Parameter defaults 
); 

Qu'est-ce que je manque? Cela fonctionnait si bien.

+0

Comment faire fonctionner votre iis6 avec le routage basé sur l'extension mvc none? - Avez-vous utilisé le mappage générique, la réécriture d'url, l'extension * .mvc ou toute autre solution de contournement? – Christian13467

+0

Je pense que nous utilisons un mappage générique. – smartdirt

Répondre

1

J'ai donc découvert que mon problème était que nous avions activé le mappage générique pour le site, mais que nous l'avions également désactivé pour certains répertoires en raison des performances. J'ai réactivé le caractère générique pour le répertoire en question et tout a commencé à fonctionner comme sur ma boîte de dev. Joie!

0

Je sais que cela a déjà été répondu par pensé que cela pourrait aider quelqu'un. Dans votre web.config vous devrez peut-être ajouter runAllManagedModulesForAllRequests = "true"

<system.webServer> 
<validation validateIntegratedModeConfiguration="false" /> 
<modules runAllManagedModulesForAllRequests="true" /> 

Hope this helps quelqu'un.