3 votes

Règle de réécriture IIS 7 et problèmes d'Url.Content

J'ai la règle suivante dans IIS 7:

Qui semble fonctionner correctement, cependant dans mon application ASP.Net MVC 3 j'ai plusieurs entrées @Url.Content("~/") qui sont résolues en /store/ comme racine au lieu de /. Une URL typique serait http://mysite.com/store/99/coats-with-hoods par exemple.

EDIT/MISE À JOUR: Je suis toujours en train de me tirer les cheveux avec celui-ci, donc j'ai décidé d'examiner le code de Url.Content et j'ai remarqué qu'il vérifie si l'URL a été réécrite (true) et si c'est le cas, il rend le chemin pertinent, ce qui à son tour ne me donne pas l'URL absolue:

    if (!PathHelpers._urlRewriterHelper.WasRequestRewritten(httpContext))
      return contentPath;
    string relativePath = PathHelpers.MakeRelative(httpContext.Request.Path, contentPath);
    return PathHelpers.MakeAbsolute(httpContext.Request.RawUrl, relativePath);

Quelqu'un sait pourquoi cela se produit ? Je suis un peu confus sur la raison de cela et comment je peux tenir compte de cela dans mon application ?

2voto

Mantorok Points 1819

D'accord, une fois que j'ai réalisé que je ne pourrais jamais utiliser IIS Rewrite contre ASP.Net MVC, j'ai décidé d'utiliser HttpContext.RewritePath à la place, et maintenant tout semble fonctionner comme il se doit.

Il s'agit d'un problème assez fondamental car ce n'était pas seulement Url.Content qui était affecté, mais aussi les routes des contrôleurs. J'avais un formulaire sur cette page particulière qui pointait également incorrectement vers /store/ au lieu de /.

1voto

robrich Points 5284

Si votre site se trouve actuellement et sera toujours à la racine du domaine / sous-domaine (par exemple, vous avez toujours l'intention que ~/ signifie site.com/), alors perdez le ~ et faites simplement en sorte que toutes les urls soient /chemin/vers/le/contenu. ~ fait des choses bizarres -- comme vous l'avez vu.

-1voto

Albedo Points 81

Scripts.Url aide vraiment à garder votre application à sa place

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X