diğer iş parçacığı üzerinde belirtilen çözümlerin çok güvenilir ve çok karmaşık çok hızlı alma şeyler buldum. ASP.Net MVC'nin bu tür bir yönlendirmeyi yapmak için Route alt sınıfa yönlendirilmesini istemişsiniz gibi görünüyor, ama hiçbir zaman benim için işe yaramadı. Ad alanıyla eşleştirmek için hiçbir zaman bir alan elde edemedim, bu yüzden "belirsiz denetleyici" istisnaları ile yaralandım (her iki adresteki bir ev denetleyicim olduğundan).
Sonuçta alt etki alanlarını ad alanlarına işaret etmek için bir kısıtlama kullandım.
Güzergahım neye benziyor. Bu yolun "api" için olduğuna dikkat edin. alt alan: Burada
context.MapRoute(
"Api_Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new { controller = new SubdomainRouteConstraint("api.") },
new[] { "BendyTree.CloudSpark.Areas.Api.Controllers" }
);
yukarıda referans "SubdomainRouteConstraint" sınıfı var:
public class SubdomainRouteConstraint : IRouteConstraint
{
private readonly string SubdomainWithDot;
public SubdomainRouteConstraint(string subdomainWithDot)
{
SubdomainWithDot = subdomainWithDot;
}
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
return new Regex("^https?://" + SubdomainWithDot).IsMatch(httpContext.Request.Url.AbsoluteUri);
}
}
Açıkçası oldukça kesmek, ama o bitti ne kadar basit gerçekten mutluyum.
Kolayca dinamik bir alana bir alt eşleştirmek için bu kodu tweek olabilir, ama sadece ayrı ayrı her bölgeyi kayıt yüzden sadece iki alanları vardır. Ayrıca bu bana her alanın içinde farklı yönlendirme özgürlüğü veriyor.
@mynameiscoffey, bunu başardınız mı? Tam olarak aynı görevim var. Yanıtı daha iyi açıklamak için –