用request.url.port抓取不到port?
关于获取端口
今天遇到一个很奇怪的事情,用request.url.port来获取一个请求的端口,返回是80 ,很纳闷啊
我的请求上面是http://www.XX.com:2288 啊,怎么会是80啊,太不可思议了!
看msdn: 获取有关当前请求的 URL 的信息
感觉对啊,没啥问题啊,但是返回确实不对啊,只好上网去搜
可能是应为 搜商比较低 找来找去找不到,最后看到一个老外的 http://translate.googleusercontent.com/translate_c?hl=zh-CN&langpair=en%7Czh-CN&u=http://stackoverflow.com/questions/1161527/router-port-forwarding-and-httpcontext-current-request-url&rurl=translate.google.com&usg=ALkJrhj0zXCUi7v6XHLAOKogOaY5aZh_Fw 看到的 才知道是端口映射的问题
request.url 获取到的是基于IIS的定位URL,而IIS只知道自己的端口是80不知道外面对他的请求是怎么处理的,就是它只去处理关于80的问题,所以返回的80
而我们访问加的2288就是加的端口映射,那这时候怎么办呢?
老外给提出了一个解决方案:这个问题应该回到http协议的底层来,http标头一个属性host解决了这个问题 :request.Heads["host"] 即为你客户端IE发送的request标头,这个才是从外网访问的URL,至此问题解决
d.sky