করার সময় মান MVC5 রাউটিং বৈশিষ্ট্য ধারনকারী সাবডোমেন ক্যাপচার , নিম্নলিখিত ব্যবহার SubdomainRoute
ক্লাস থেকে উদ্ভূত Route
।
অতিরিক্তভাবে, SubdomainRoute
সাবডোমেনটিকে বিকল্পভাবে ক্যোয়ারি প্যারামিটার , তৈরি sub.example.com/foo/bar
এবং example.com/foo/bar?subdomain=sub
সমতুল্য হিসাবে নির্দিষ্ট করার অনুমতি দেয় । এটি আপনাকে ডিএনএস সাবডোমেনগুলি কনফিগার করার আগে পরীক্ষার অনুমতি দেয়। ক্যোয়ারী প্যারামিটার (যখন ব্যবহৃত হবে) Url.Action
ইত্যাদি দ্বারা নির্মিত নতুন লিঙ্কগুলির মাধ্যমে প্রচারিত হয় etc.
ক্যোয়ারী প্যারামিটার নেট নেট দিয়ে কনফিগার না করে বা প্রশাসক হিসাবে চালানো ছাড়াই ভিজ্যুয়াল স্টুডিও 2013 এর সাথে স্থানীয় ডিবাগিং সক্ষম করে । ডিফল্টরূপে, আইআইএস এক্সপ্রেস কেবল binds স্থানীয় হোস্টের যখন অ উঁচু; এটি sub.localtest.me এর মতো প্রতিশব্দী হোস্টনামকে আবদ্ধ করবে না ।
class SubdomainRoute : Route
{
public SubdomainRoute(string url) : base(url, new MvcRouteHandler()) {}
public override RouteData GetRouteData(HttpContextBase httpContext)
{
var routeData = base.GetRouteData(httpContext);
if (routeData == null) return null; // Only look at the subdomain if this route matches in the first place.
string subdomain = httpContext.Request.Params["subdomain"]; // A subdomain specified as a query parameter takes precedence over the hostname.
if (subdomain == null) {
string host = httpContext.Request.Headers["Host"];
int index = host.IndexOf('.');
if (index >= 0)
subdomain = host.Substring(0, index);
}
if (subdomain != null)
routeData.Values["subdomain"] = subdomain;
return routeData;
}
public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
{
object subdomainParam = requestContext.HttpContext.Request.Params["subdomain"];
if (subdomainParam != null)
values["subdomain"] = subdomainParam;
return base.GetVirtualPath(requestContext, values);
}
}
সুবিধার্থে MapSubdomainRoute
আপনার RegisterRoutes
পদ্ধতি থেকে নিম্নলিখিত পদ্ধতিটি কল করুন ঠিক যেমন আপনি পুরানো বলে মনে করেন MapRoute
:
static void MapSubdomainRoute(this RouteCollection routes, string name, string url, object defaults = null, object constraints = null)
{
routes.Add(name, new SubdomainRoute(url) {
Defaults = new RouteValueDictionary(defaults),
Constraints = new RouteValueDictionary(constraints),
DataTokens = new RouteValueDictionary()
});
}
শেষ অবধি, সাবডোমেনটি সুবিধামত অ্যাক্সেস করতে (সত্যিকারের সাবডোমেন বা কোয়েরি প্যারামিটার থেকে), এই Subdomain
সম্পত্তি সহ একটি নিয়ামক বেস শ্রেণি তৈরি করা সহায়ক :
protected string Subdomain
{
get { return (string)Request.RequestContext.RouteData.Values["subdomain"]; }
}