内外网端口映射不一致 导致博易页面链接端口不对的问题
部署了博易，用FRP做了内网穿透，内网8080端口，外网80，发现页面上很多链接都是内网的端口，网上搜了一下，在web.config添加如下配置： <add key="aspnet:UseHostHeaderForRequestUrl" value="false" /> 实测没有效果，还是一样的。找不到其它办法，只能改源代码了。第一步，在web.config里添加一个配置项： <add key="BlogEngine.MappingPort" value="80"/> 第二步，在 BlogEngine.Core.BlogConfig 类里添加属性，代码里的两个问号注意改成半角的，博易的文章里有两个半角问号会出错。 #region MappingPort /// /// 端口映射，内网穿透等的前端端口 /// public static string MappingPort { get { return WebConfigurationManager.AppSettings["BlogEngine.MappingPort"] ？？""; } } #endregion第三步，修改 BlogEngine.Core.Utils 类的 AbsoluteWebRoot 属性，根据 BlogEngine.MappingPort 配置来重新定义 AbsoluteWebRoot public static Uri AbsoluteWebRoot { get { var context = HttpContext.Current; if (context == null) { throw new WebException("The current HttpContext is null"); } var absoluteurl = context.Items["absoluteurl"]; if (absoluteurl == null) { if (BlogConfig.MappingPort.Length == 0) { absoluteurl = new Uri(context.Request.Url.GetLeftPart(UriPartial.Authority) + RelativeWebRoot); } else { string authority = context.Request.Url.Scheme + "://" context.Request.Url.Host("80".Equals(BlogConfig.MappingPort) ? "" : ":" + BlogConfig.MappingPort); absoluteurl = new Uri(authority + RelativeWebRoot); } context.Items["absoluteurl"] = absoluteurl;}return absoluteurl as Uri; } }完成这三步，在页面上显示的链接端口号就对了。原创文章，转载注明出处！
部署了博易，用FRP做了内网穿透，内网8080端口，外网80，发现只要有response.redirect跳转的地方都会跳到8080端口，网上找了一下解决办法，如下：web.config 修改如下属性<httpRuntime useFullyQualifiedRedirectUrl="false" />参见：https://q.cnblogs.com/q/87528/