如果我理解这个问题。
假设
的完整路径是与当前应用程序或子应用程序的路径。这不是一个限于父母的路径,也不是通往兄弟应用程序的路径。所需的路径是相对于当前的应用程序路径。
方案1条
的路径如
“/ someApp/someFolder/someSubFolder /文件。EXT”
应该把它解析为: -
“〜/ someFolder/someSubFolder/file.ext”
(尽管〜/符号是不是ASP经典的理解)
。 方案2
“/someApp/someSubApp/SomeSubFolder/file.ext”
你仍然想: -
“〜/ someFolder/someSubFolder/file.ext”
方案3
该应用程序是网站的根应用: -
“/ someFolder/someSubFolder /文件。 EXT”
仍然会成为
“〜/ someFolder/someSubFolder.file.ext”
解决方案
解决这一点的关键是: -
Dim sAppMetaPath : sAppMetaPath = Request.ServerVariables("APPL_MD_PATH")
对于上述设定的情况下,这将导致类似: -
- “/ LM/W3SVC/33230916/Root/someApp“
- ”/ LM/W3SVC/33230916/Root/someApp/someSubApp“
- “/ LM/W3SVC/33230916 /根”
而且
Dim sInstanceMetaPath: sInstanceMetaPath = Request.ServerVariables("INSTANCE_META_PATH")
将在所有的情况下返回
“/ LM/SVC/33230916”
随着一些数学减少我们可以得到的功能: -
Function ToAppRelative(virtualPath)
Dim sAppMetaPath : sAppMetaPath = Request.ServerVariables("APPL_MD_PATH")
Dim sInstanceMetaPath: sInstanceMetaPath = Request.ServerVariables("INSTANCE_META_PATH")
ToAppRelative = "~/" & Mid(virtualPath, Len(sAppMetaPath) - Len(sInstanceMetaPath) - 3)
End Function
您能否澄清一件事,该代码在哪里运行?在你的应用程序的ASP页面? – AnthonyWJones 2009-05-21 13:14:20
还有什么IIS版本? IIS6? – AnthonyWJones 2009-05-21 13:15:32