尽管WWWfilter,IIS7部署的MVC不会重定向

时间:2009-05-12 11:29:12

标签: c# asp.net-mvc iis-7

我的所有操作都有WWW过滤器

public class WwwFilter : ActionFilterAttribute, IActionFilter {

    #region IActionFilter Members

    void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext) {

    }

    void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext) {

        var request = filterContext.HttpContext.Request;
        var response = filterContext.HttpContext.Response;

        if (request.Url.Host.StartsWith("www")) {
            string newPort = request.Url.IsDefaultPort ? "" : ":" +request.Url.Port.ToString();
            string newUrl = request.Url.Scheme + "://" +request.Url.Host.Replace("www.", "") + newPort + request.Url.AbsolutePath;
            filterContext.Result = new RedirectResult(newUrl);

        }
    }

    #endregion
}

我的网站http://www.tweetMP.org.au

不会过滤掉主页或某些其他页面的

如果您使用菜单访问该网站,最终www将在过滤器启动时消失。

我不知道为什么会这样。有什么想法吗?

更新:这似乎与我正在做的每个动作上的OutputCache有关。在中等信任环境中过滤WWW的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

我会研究使用内置的IIS7 URL Rewrite Module对重定向的支持。此外,它也可以在客户端浏览器中缓存...如果你强制刷新(Shift + F5)重定向工作吗?

除此之外,如果您想在图像,脚本和CSS的子域内进行性能优化,您可能需要保留www。由于cookie设置为父域(mydomain.ext),因此也会发送到子域(images.mydomain.ext)。