我想请求来自域 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>不。