软件解决路由回流问题

最近在使用CAS 做SSO 时遇到了回流问题

(回流简要说明:

应用和服务在同一内网IP,本身服务和应用又被映射了外网IP,当应用使用外网IP访问服务时,访问被拒绝。因为路由检测到访问的服务在同一内网IP地址上,只能通过内网IP访问,或者更改路由的配置。)


在这里介绍软件的解决方法:

由于CAS验证的需要无法直接将IP配置改为内网IP,所以只能动态的判断,当发生WebException时自动将URL中的地址替换为本机地址,用来解决回流问题


判断的代码如下(ReplaceLocalIP是用来替换本地地址的方法)

                try
                {
                    serverResponse = RetrieveResponseFromServer(validationUrl, ticket);
                }
                catch (WebException)
                {
                    validationUrl = ReplaceLocalIP(validationUrl);
                    serverResponse = RetrieveResponseFromServer(validationUrl, ticket);
                }
ReplaceLocalIP方法:
 /// <summary>
        /// 替换为本地地址针对 回流问题
        /// </summary>
        /// <param name="validationUrl"></param>
        /// <returns></returns>
        private string ReplaceLocalIP(string validationUrl)
        {
            int iIndex = validationUrl.IndexOf("//");
            int iIndex1 = validationUrl.IndexOf("/", iIndex + 2);
            string sHostOld = validationUrl.Substring(iIndex + 2, iIndex1 - iIndex + 2);
            string[] ArrayAdd = sHostOld.Split(':');
            ArrayAdd[0] = "127.0.0.1";

            string sHostNew = string.Empty;
            foreach (var item in ArrayAdd)
                sHostNew += item+":";

            sHostNew = sHostNew.Remove(sHostNew.Length - 1);

            string sResult = validationUrl.Replace(sHostOld, sHostNew);

            return sResult;
        }


 
 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值