当前位置:编程学习 > C#/ASP.NET >>

外网端口映射访问内网asp.net mvc程序的问题,高分求

我有一个基于asp.net mvc4.0开发的程序,部署在windows2003的iis6.0上,绑定的端口是80,内网服务器

ip是:10.0.0.13

前端有linux路由器,将外网ip(比如:8.8.8.8)的端口8080映射到10.0.0.13的80端口上

问题来了:mvc中所有跟路由相关的转向都出现问题

比如我访问http://8.8.8.8:8080/Admin ,程序中返回:RedirectToAction("Login")

则直接转向到了:http://8.8.8.8/Admin/Login,实际上我想要的结果是:

http://8.8.8.8:8080/Admin/Login

8080端口丢失,究其原因,应该是mvc默认获取到的是内网部署机器的端口号:80

我想得到正确的访问地址,应该怎么做?

谢谢。

--------------------编程问答-------------------- 我只能一次最多发100分的问题,分我有的是,只要能解决这个问题,可以追加。 --------------------编程问答-------------------- 在连接文件夹中设一个主页常理,所有的连接地址全部使用主页常量+文件,也就是说所有的连接全部使用绝对地址。 --------------------编程问答-------------------- 其实这主要是因为你使用了相对路径的问题,你使用绝对路径就 没事了,我这边使用mastpage,所以经常有这种事,所以所有的访问全部使用绝对路径,但你不能写死绝对路径,万一以后地址变了,你就完了,所以把绝对路径存到一个地方,所有访问使用绝对路径+文件地址就可以了。 --------------------编程问答--------------------
引用 2 楼 yixian2007 的回复:
在连接文件夹中设一个主页常理,所有的连接地址全部使用主页常量+文件,也就是说所有的连接全部使用绝对地址。


不好意思,这不是我想要的答案,谢谢。 --------------------编程问答-------------------- 希望高人来帮一下忙,谢谢。

mvc路由转向,如何通过实际访问地址的端口来,而不是iis部署地址的端口 --------------------编程问答-------------------- 自己顶。。。。。。。。。。。。 --------------------编程问答-------------------- 路由应该解决不了你的问题。 --------------------编程问答--------------------
引用 7 楼 xinsiyu2008 的回复:
路由应该解决不了你的问题。


那这个的解决方案是?烦请明示,谢谢。 --------------------编程问答-------------------- 自己顶一下。 --------------------编程问答-------------------- 改跳转链接不是你想的,也不是好办法。可以建两个站点指向同一个地方,一个给外网用一个给内网用。 --------------------编程问答--------------------
引用 10 楼 xinsiyu2008 的回复:
改跳转链接不是你想的,也不是好办法。可以建两个站点指向同一个地方,一个给外网用一个给内网用。


关键,不改源码,外网根本没法用啊,如果没有简单的根本解决办法,只是去改跳转链接
工作量太大,不可取。 --------------------编程问答-------------------- 这个问题,我是真实遇到过的。我当时处理的时候是在webconfig里设置一下端口匹配。逻辑就是当你在内网需要输出网址的时候,把webconfig里的端口器取出来,换掉你内网的端口号。
简单说当你输出一个网址的时候你需要知道这个网址是前端还是后端输出,是前台需要还是后台需要,根据这个需要再做处理吧 --------------------编程问答--------------------
引用 11 楼 uuyi 的回复:
Quote: 引用 10 楼 xinsiyu2008 的回复:

改跳转链接不是你想的,也不是好办法。可以建两个站点指向同一个地方,一个给外网用一个给内网用。


关键,不改源码,外网根本没法用啊,如果没有简单的根本解决办法,只是去改跳转链接
工作量太大,不可取。
所以说你在部两个站点,指向同一个地方一个开80一个开8080不就行了。 --------------------编程问答--------------------
引用 13 楼 xinsiyu2008 的回复:
Quote: 引用 11 楼 uuyi 的回复:

Quote: 引用 10 楼 xinsiyu2008 的回复:

改跳转链接不是你想的,也不是好办法。可以建两个站点指向同一个地方,一个给外网用一个给内网用。


关键,不改源码,外网根本没法用啊,如果没有简单的根本解决办法,只是去改跳转链接
工作量太大,不可取。
所以说你在部两个站点,指向同一个地方一个开80一个开8080不就行了。

你应该没看懂我的问题。
现在是外网访问端口出现问题,跟你内网部署几个站点没关系的啊。
外网ip访问8080端口的时候,如果遇到mvc的路由跳转,8080全丢失,直接请求的是外网ip的80端口
问题在于,目前做外网ip映射的前段路由器是没法动的,我只能动内网服务器,而你的办法是建两个
站点,明显实现不了我需要的功能,你仔细考虑一下。 --------------------编程问答--------------------
引用 13 楼 xinsiyu2008 的回复:
Quote: 引用 11 楼 uuyi 的回复:

Quote: 引用 10 楼 xinsiyu2008 的回复:

改跳转链接不是你想的,也不是好办法。可以建两个站点指向同一个地方,一个给外网用一个给内网用。


关键,不改源码,外网根本没法用啊,如果没有简单的根本解决办法,只是去改跳转链接
工作量太大,不可取。
所以说你在部两个站点,指向同一个地方一个开80一个开8080不就行了。


我又仔细看了一下你说的,我知道你的意思了,现在的问题是,外网已经将8080绑定到内网的80
暂时没法改动绑定端口到内网的8080,网管不是我能控制的,不到万不得已,不采用这个方案
我现在想从程序级别去修正这个问题。 --------------------编程问答-------------------- 哎又回到原点了,只改一改路由做不到这一点。 --------------------编程问答--------------------
引用 16 楼 xinsiyu2008 的回复:
哎又回到原点了,只改一改路由做不到这一点。


哎,你这种解决方案,我开始就想到了,让客户实施,客户表示改动太大,不太好处理,我现在只能先想别的办法。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,