部署了博易,用FRP做了内网穿透,内网8080端口,外网80,发现页面上很多链接都是内网的端口,
网上搜了一下,在web.config添加如下配置:
<appSettings>
<add key="aspnet:UseHostHeaderForRequestUrl" value="false" />
</appSettings>
实测没有效果,还是一样的。
找不到其它办法,只能改源代码了。
第一步,在web.config里添加一个配置项:
<appSettings>
<!-- 端口映射,内网穿透等的前端端口 -->
<add key="BlogEngine.MappingPort" value="80"/>
</appSettings>
第二步,在 BlogEngine.Core.BlogConfig 类里添加属性,
代码里的两个问号注意改成半角的,博易的文章里有两个半角问号会出错。
#region MappingPort
/// <summary>
/// 端口映射,内网穿透等的前端端口
/// </summary>
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;
} }
完成这三步,在页面上显示的链接端口号就对了。
原创文章,转载注明出处!