用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,至此问题解决

posted @ 2010-08-02 15:13  Devin Mao  阅读(1446)  评论(3编辑  收藏  举报