Configuration
IIS 7.5 (Express) applicationhost.config:虛擬目錄的物理路徑可以是相對路徑嗎?
我正在
applicationhost.config
為 IIS 7.5 Express 配置一個站點:<site name="default" id="1" serverAutoStart="true"> <application path="/"> <virtualDirectory path="/" physicalPath="%IIS_BIN%\..\Somewhere\Else" /> <!-- ^^^^^^^^^^^^^^^^^^^^^^^^^^^ --> </application> ... </site>
我發現如圖所示指定相對路徑似乎不起作用,並且會導致 HTTP
500.19 Internal Server Error
。IIS 進一步報告錯誤程式碼0x8007007b
,經過一番Google搜尋後,似乎表明文件路徑語法無效。有什麼辦法可以解決這個錯誤,以便我可以為我的站點根目錄使用相對物理路徑?
很不幸的是,不行。那一定是一條完整的物理路徑。只要您不打算經常更改站點路徑,靜態路徑就不是問題。如果您經常將路徑更改為不同的站點實例,您可能需要考慮使用 appcmd 編寫更改腳本,以便獲取所有子文件夾。
你沒有說你如何執行 IIS Express。如果您從命令行執行它,那麼您可以嘗試使用創建和環境變數的解決方法,您可以在
physicalPath
.例如,如果您有兩個文件:run_on_iisexpress.ps1和run_on_iisexpress_applicationhost.config在一個目錄中。在執行 IIS 的run_on_iisexpress.ps1腳本中,您可以使用絕對 url 創建環境變數。
run_on_iisexpress.ps1
$applicationhostConfig = "$PSScriptRoot\run_on_iisexpress_applicationhost.config" $env:MY_WEBSITE_PATH = $PSScriptRoot; #or any other logic to generate absolute path from relative path (Resolve-Path command is usefull here) &"C:\Program Files\IIS Express\iisexpress.exe" /config:"$applicationhostConfig" /site:"MyWebsite" /apppool:"Clr4IntegratedAppPool"
run_on_iisexpress_applicationhost.config
... <site name="MyWebsite" id="2"> <application path="/" applicationPool="Clr4IntegratedAppPool"> <virtualDirectory path="/" physicalPath="%MY_WEBSITE_PATH%" /> </application> <bindings> <binding protocol="http" bindingInformation="*:60001:localhost" /> </bindings> </site> ...