日期:2014-05-17  浏览次数:20517 次

有没有在不同情况下能完全代替这段代码的内置对象属性呢?

var curRequest = HttpContext.Current.Request;

string prefixUrl = curRequest.Url.Host + ":" + curRequest.Url.Port + curRequest.ApplicationPath + (curRequest.ApplicationPath == "/" ? "" : "/");


1.本地调试,比如localhost:8080/Controller/Action/P1/P2
2.部署于IIS(虚拟目录方式),比如localhost:90/Website1/Controller/Action/P1/P2
3.部署于IIS(单独网站方式),比如www.website.com:7888/Controller/Action/P1/P2

只要获取到的是
1.localhost:8080
2.localhost:90/Website1
3.www.website.com:7888
即可。总觉得应该有更直接的办法吧,但是想不起来,找了下也没找到。

------解决方案--------------------
引用:

var curRequest = HttpContext.Current.Request;

string prefixUrl = curRequest.Url.Host + ":" + curRequest.Url.Port + curRequest.ApplicationPath + (curRequest.ApplicationPath == "/" ? "" : "/");


1.本地调试,比如localhost:8080/Controller/Action/P1/P2
2.部署于IIS(虚拟目录方式),比如localhost:90/Website1/Controller/Action/P1/P2
3.部署于IIS(单独网站方式),比如www.website.com:7888/Controller/Action/P1/P2

只要获取到的是
1.localhost:8080
2.localhost:90/Website1
3.www.website.com:7888
即可。总觉得应该有更直接的办法吧,但是想不起来,找了下也没找到。


JS算么?如果是后台的,我觉的应该是没有把,我现在也是这样用的!闲麻烦,自己封装下!
------解决方案--------------------
Request.Url.Authority + Request.ApplicationPath