如果我理解這個問題。
假設
的完整路徑是與當前應用程序或子應用程序的路徑。這不是一個限於父母的路徑,也不是通往兄弟應用程序的路徑。所需的路徑是相對於當前的應用程序路徑。
方案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