Asp.Net Mvc 应用程序如何应对不同的URL地址?????,问题解决了
在上一篇博文中,本人碰到了实际应用中的一些问题。
可能是我问的问题有些弱智,害的高手们为了这个低智商的问题伤透了脑筋。还有位老大,不屑一顾的说不知道我要干什么!!!
其实在实际工作中,我想上文中描述的场景应该还是存在的。至少我现在就遇到了这个问题。
也可能是我在上一篇文章中没有把问题描述清楚,我其实是想寻找一种Asp.net Mvc 框架结构中的解决方案。
因为IIS服务器是一台,现在公司还没有能力添置更多的服务器,而且域名是在不同的时期申请的,领导要求将不同的域名绑定到一个Controller上。
各位高手给出的答案为3种:URL转发,二级域名CNAME,URL rewriter(Http Module) 。但是这些我都不熟,从头来浪费时间了。
绞尽脑汁思索解决方案,既然没有现成的,就自己啃吧!
在Google,Bing中按照URL,Asp.net Mvc等关键词搜啊搜,一篇一篇的看。
看着看着,突然脑海里闪出一丝光亮,解决方案有了。
解决方案:
将所有域名全部指向承载Asp.net Mvc应用程序的IIS服务器,这样用任何域名访问都是访问同样的一套Asp.net Mvc应用程序了。
在Asp.net Mvc应用程序的路由规则中定义:
AControllers(A子公司)
BControllers(B子公司)
CControllers(C子公司)
DControllers(D子公司)
HomeControllers(总公司)
这样就满足了最开始的系统要求,然后在路由规则的最后一条创建一条默认的规则,所有的URL都最先满足这一条,然后在这条规则的Action方法中如下操作:
string url=this.HttpContext.Request.Url.ToString(); if (url.Contains("www.A.com")) { return RedirectToAction("Index", "A"); } else { return RedirectToAction("Index", "Home"); }
当然这只是简单的演示,下一步还要从外部文件,例如Xml文件中读取转向规则,然后进行转向。
哈哈,应该思路还算是正确的吧!