.NET核心域路由

时间:2018-08-10 10:18:22

标签: c# asp.net-core

我想请求来自域 api.mydomain.com 的请求。将被路由到 API 控制器,而来自 mydomain.com 的控制器将被路由到 MVC 控制器。

这是我拥有的约束主机 ConstraintHostRouteAttribute

public class ConstraintHost : IRouteConstraint {

    public string _value { get; private set; }
    public ConstraintHost(string value) {
        _value = value;
    }

    public bool Match(HttpContext httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) {
        string hostURL = httpContext.Request.Host.ToString();
        if (hostURL == _value) {
            return true;
        }
        //}
        return false;
        //return hostURL.IndexOf(_value, StringComparison.OrdinalIgnoreCase) >= 0;
    }

    public bool Match(HttpContext httpContext, IRouter route, string routeKey, RouteValueDictionary values, RouteDirection routeDirection) {
        throw new NotImplementedException();
    }
}
public class ConstraintHostRouteAttribute : RouteAttribute {
    public ConstraintHostRouteAttribute(string template, string sitePermitted)
        : base(template) {
        SitePermitted = sitePermitted;
    }

    public RouteValueDictionary Constraints {
        get {
            var constraints = new RouteValueDictionary();
            constraints.Add("host", new ConstraintHost(SitePermitted));
            return constraints;
        }
    }

    public string SitePermitted {
        get;
        private set;
    }
}

我试图通过这样的属性来路由它们:

[ConstraintHostRoute("Get", "api.mysite.com")]
   public ActionResult Get() {
   return Ok("Domaina.com API response");
}

我尝试从本地主机访问Get Method,它始终返回值。如果我发布Web App,则将映射相同的-Get方法,但使用api.mysite.com进行约束将不执行任何操作。

我需要在那些约束条件的某个地方注册吗?因为永远不会调用Math方法和Constraints Get属性。

我在 MVC 5 上看到可以覆盖RouteValueDictionary Constraints,但是在 MVC 5 中,我们有RouteFactoryAttribute,在 MVC 6 < / em>不。

0 个答案:

没有答案