Asp.net母版页使用#include引入外部资源报路径格式不支持如何解决
错误原因
ASP.NET 的 <!--#include file="xxx" --> 指令仅支持引入当前服务器上的本地文件资源,仅可传入站点内相对路径、服务器本地绝对物理路径,不支持传入https开头的远程HTTP地址,这就是触发「路径格式不支持」报错的核心原因。
可行解决方案
- 方案1(优先推荐):将目标远程
head-content.html文件下载到本地站点目录下,比如存放到站点根目录的TemplatePackage/4.0/includes/路径中,再修改include指令引用本地路径即可:
<!--#include file="/TemplatePackage/4.0/includes/head-content.html" -->
该方案无需修改后台代码,执行性能最高,适合远程资源更新频率低的场景。
- 方案2(实时拉取远程内容):如果要求必须同步远程最新内容,可通过服务器端请求拉取远程内容后输出到页面:
- 在母版页的head标签中添加Literal控件作为内容占位:
<head> <asp:Literal ID="HeadContentLiteral" runat="server" /> <title>Home | aaa| xxx</title> </head>
- 在母版页后台代码
ResponsiveContentEmpty.master.cs中添加拉取逻辑:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { using (var httpClient = new HttpClient()) { string remoteContent = httpClient.GetStringAsync("https://www.xxx.gov/TemplatePackage/4.0/includes/head-content.html").Result; HeadContentLiteral.Text = remoteContent; } } }
如果使用的.NET Framework版本低于4.5,可替换为WebClient实现远程内容拉取。
内容的提问来源于stack exchange,提问作者jlo-gmail
相关产品推荐
相关产品推荐

