Dim sb As New StringBuilder()
Dim wdgtUrl = Path.Combine(Root, "widgets").Replace("\", "/")
Dim rootDir As String = HttpContext.Current.Server.MapPath(wdgtUrl)
sb.Append(String.Format("<script type=""text/javascript"" src=""{0}""></script>", Root.TrimStart({"~"c}) + "/custom.js"))
If System.IO.Directory.Exists(rootDir) AndAlso System.IO.Directory.GetFiles(rootDir, "*.js", SearchOption.TopDirectoryOnly).Length > 0 Then
For Each Path As String In System.IO.Directory.GetFiles(rootDir, "*.js", SearchOption.TopDirectoryOnly)
sb.Append(String.Format("<script type=""text/javascript"" src=""/{0}""></script>", Path.Replace(Request.ServerVariables("APPL_PHYSICAL_PATH"), [String].Empty).Replace("\", "/")))
Next
End If
我使用以下代码搜索目录,并为目录中的每个JavaScript文件创建脚本标记。这在本地工作正常,但在生产站点上,脚本返回404响应,因为链接以:
开头/ E:/ WEB /主要/
我原本预计
Path.Replace(Request.ServerVariables("APPL_PHYSICAL_PATH"), [String].Empty)
替换它,但在这种情况下它没有。在生产盒上,文件夹是一个虚拟目录,而在本地它不是。我在本地创建了一个虚拟目录来测试并得到同样的问题。
任何见解都会很棒。