Asp.net mvc 将programmaticaly www.prefix添加到控制器操作

Asp.net mvc 将programmaticaly www.prefix添加到控制器操作,asp.net-mvc,Asp.net Mvc,如果不存在www前缀,是否有一种使用RedirectToAction方法将其添加到单个操作(或控制器)的简单方法 我尝试使用Redirect(),但遇到了一些其他问题。我想它会重新启动会话 更新: 我添加了一个实现如下属性的类: public class ExtendAttributes { public class AddwwwPrefix : FilterAttribute, IAuthorizationFilter { public void OnAutho

如果不存在www前缀,是否有一种使用RedirectToAction方法将其添加到单个操作(或控制器)的简单方法

我尝试使用Redirect(),但遇到了一些其他问题。我想它会重新启动会话

更新:

我添加了一个实现如下属性的类:

public class ExtendAttributes
{
    public class AddwwwPrefix : FilterAttribute, IAuthorizationFilter
    {
        public void OnAuthorization(AuthorizationContext filterContext)
        {

            string host = filterContext.HttpContext.Request.Url.Host;
            if (host.Contains("www."))
            {
                return; //It already contains www. so don't change it
            }
            else
            {
                host = "www." + filterContext.HttpContext.Request.Url.Host;
            }

            // redirect to HTTP  
            string url = "http://" + host + filterContext.HttpContext.Request.RawUrl;
            filterContext.Result = new RedirectResult(url);
        }
    } 
}
[ExtendAttributes.AddwwwPrefix]
   public ActionResult MyAction()
    {
      ...
所以我可以这样使用它:

public class ExtendAttributes
{
    public class AddwwwPrefix : FilterAttribute, IAuthorizationFilter
    {
        public void OnAuthorization(AuthorizationContext filterContext)
        {

            string host = filterContext.HttpContext.Request.Url.Host;
            if (host.Contains("www."))
            {
                return; //It already contains www. so don't change it
            }
            else
            {
                host = "www." + filterContext.HttpContext.Request.Url.Host;
            }

            // redirect to HTTP  
            string url = "http://" + host + filterContext.HttpContext.Request.RawUrl;
            filterContext.Result = new RedirectResult(url);
        }
    } 
}
[ExtendAttributes.AddwwwPrefix]
   public ActionResult MyAction()
    {
      ...

您可以配置IIS来实现这一点

在“绑定”下,添加站点所服务的所有主机名

添加HTTP功能URL重写,并添加入站规则:

  • 匹配URL:请求的URL使用正则表达式匹配模式
模式:
(.*)

  • 所有条件都匹配
输入{HTTP\u HOST}与模式不匹配
^www\..*

  • 动作类型重定向
重定向URL:
http://(您的目标域)/(R:1)

追加查询字符串,重定向类型
永久(301)


根据您的需要进行调整。

谢谢您的回答。问题是我没有访问IIS设置的权限。