我的所有操作都有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
}
不会过滤掉主页或某些其他页面的
如果您使用菜单访问该网站,最终www将在过滤器启动时消失。
我不知道为什么会这样。有什么想法吗?
更新:这似乎与我正在做的每个动作上的OutputCache有关。在中等信任环境中过滤WWW的正确方法是什么?
答案 0 :(得分:1)
我会研究使用内置的IIS7 URL Rewrite Module对重定向的支持。此外,它也可以在客户端浏览器中缓存...如果你强制刷新(Shift + F5)重定向工作吗?
除此之外,如果您想在图像,脚本和CSS的子域内进行性能优化,您可能需要保留www。由于cookie设置为父域(mydomain.ext),因此也会发送到子域(images.mydomain.ext)。