删除 ASP.NET MVC 1.0 中的“WWW”

Dus*_*ine 2 url asp.net-mvc

我试图强制域名不使用“www”。如果尝试,我想重定向用户。我很少看到 MVC 解决方案。有没有办法利用MVC内置的路由,或者最好的解决方案是什么。

谢谢

Lac*_*che 5

实现为 ActionFilter,因为它类似于 MVC,并且更加明确。

public class RemoveWwwFilterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var req = filterContext.HttpContext.Request;
        var res = filterContext.HttpContext.Response;


        var host = req.Uri.Host.ToLower();
        if (host.StartsWith("www.")) {
            var builder = new UriBuilder(req.Url) {
                Host = host.Substring(4);
            };
            res.Redirect(builder.Uri.ToString());
        }
        base.OnActionExecuting(filterContext);
    }
}
Run Code Online (Sandbox Code Playgroud)

将 ActionFilter 应用到您的控制器或您的基本控制器类(如果您有的话)。

有关操作过滤器的介绍,请参阅MSDN 上的了解操作过滤器

[RemoveWwwFilterAttribute]
public class MyBaseController : Controller
Run Code Online (Sandbox Code Playgroud)

  • 为什么不为此使用`UriBuilder`,而是使用Request.Url? (2认同)