-->

IIS 7重写规则和Url.Content问题(IIS 7 rewrite rule and Url

2019-09-17 01:56发布

我在IIS 7以下规则:

           <rule name="Category" enabled="true">
              <match url="^store/([0-9]+)/(.*)" />
              <action type="Rewrite" url="store?cid={R:1}" appendQueryString="false" logRewrittenUrl="true" />
           </rule>

这似乎在我的ASP.Net MVC 3应用程序工作正常,但是我有几个@ Url.Content(“〜/”),这是解决到/存储/为根,而不是/项。 一个典型的网址是http://mysite.com/store/99/coats-with-hoods例如。

编辑/ UPDATE:我还在拉我的头发就这一个,所以我决定看看Url.Content的代码库,我发现它检查URL是否已被重新写入(真),如果是它使相关的路径,这反过来给我绝对的网址:

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

任何人都知道为什么这会是什么? 我有点困惑,为什么发生这种情况,我怎么能在我的应用占了吗?

Answer 1:

一次OK,我意识到,我是永远不会能够使用IIS重写对ASP.Net MVC我决定使用HttpContext.RewritePath代替,现在一切似乎是工作,因为它应该。

这是一个非常基本的问题,因为它不只是Url.Content是受到了影响,这是控制器的路线也一样,我有一种形式,它也被错误地指向/存储/不是/这个特定页面上。



Answer 2:

如果您的网站目前是并将永远是域/子域的根目录(例如,你总是想要~/意思site.com/ ),则失去了~ ,只是使所有的网址是/path/to/content~做一些古怪的东西巫术-正如你已经看到了。



文章来源: IIS 7 rewrite rule and Url.Content issues