2008-12-04 5 views
4

Je développe une application mvc Asp.net, tout fonctionne très bien dans le serveur de développement ASP.net mais quand j'essaye de l'héberger sur IIS 7. Je suis problème lié à la résolution d'URL J'ai utilisé des chemins relatifs en Javascript pour donner l'image. Le fichier script est dans ~/Scripts/dossier et les fichiers image sont dans ~/Content/images/dossier. Maintenant, dans le fichier javascript j'essaie d'utiliser le donner en donnant le chemin relatif comme http: // localhost/WebApp1/controller1/action1/ il essaie de le trouver à http://localhost/controller1/action1/ et couldn; t trouver le fichier.URL de l'image relative dans le fichier Javascript - ASP.net MVC et IIS 7

Répondre

1

Essayez:

< a href = "~/controller1/action1 /" id = "testLnk" runat = "server" >

L'attribut runat doit veiller à ce que le cadre résout. Vous pouvez également utiliser la méthode ResolveUrl.

+0

Comment puis-je utiliser le ResolveUrl dans un fichier javascript – Raja

+1

I Je ne suis pas un expert JavaScript, mais vous pouvez essayer de l'intégrer comme suit: <% = ResolveUrl ("~/quelquechose.fichier")%> – IrishChieftain

+0

Je ne pense pas qu'il soit possible d'incorporer le code ASP l Par exemple, dans JS – zidane

4

Si la lecture est correcte, vous exécutez maintenant la WebApp à partir de la racine du domaine d'IIS7 au lieu de WebApp1 dans votre environnement de développement.

Donc, si mon hypothèse est correcte, alors ~/ devrait résoudre maintenant http://localhost/ au lieu de http://localhost/WebApp1/

Si c'est tout toujours correct, la structure de votre dossier a tout remonté d'un niveau avec votre dossier ~/scripts dans le chemin absolu:

http://localhost/Scripts/

et le dossier vos images:

http://localhost/Content/Images/

Pour accéder à vos images de vos scripts, vous pouvez utiliser un certain nombre de méthodes. Le plus simple est d'utiliser le chemin relatif de votre répertoire de scripts: « ../Content/Images/MyImage.jpg »

Ou vous pouvez utiliser document.location.host pour construire le nom de chemin complet dans le javascript : document.location.host + « /Content/Images/MyImage.jpg »

Une autre méthode est d'avoir ASP.NET construire cette partie du script dynamique, de sorte que le nom de chemin complet est injected.You peut Pour ce faire, utilisez ScriptManager.RegisterStartupScript ou ScriptManager.RegisterScriptBloc

Il y a vraiment beaucoup de manières de dépecer ce chat, elles sont juste les 3 premières que je peux penser de dessus de ma tête.

+3

+1 pour l'option 'document.location.host +" /Content/Images/MyImage.jpg "' – ajbeaven

1

J'ai eu et même problème et trouvé une solution d'élément par David Banister. Le problème est avec l'action d'index du contrôleur MVC qui renvoie une URL sous la forme de (www.monsite.com/viewname, par opposition à www.mysite.com/viewname/index) que le navigateur Web échouera plus tard lorsque vous essayez de référencer css ou fichiers js en utilisant la syntaxe de chemin relatif (../../).

Sa solution fonctionne bien pour moi. J'espère que cela aide quelqu'un. Bonne chance.

http://blog.davidbanister.com/2010/09/28/mvc-fixes-relative-path-issues-in-asp-net-mvc-2/

0

J'ai eu ce problème dans le passé, essayez d'utiliser tilde

~/controller1/action1/