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
,经过谷歌搜索后,似乎表示文件路径语法无效。
有什么方法可以解决此错误,以便我可以使用相对物理路径作为我的网站根目录?
答案1
不幸的是不行。这必须是完整的物理路径。只要您不打算经常更改站点路径,静态路径就不是问题。如果您经常将路径更改为不同的站点实例,您可能需要考虑使用 appcmd 编写更改脚本,以便获取所有子文件夹。
答案2
您没有说明如何运行 IIS Express。如果您从命令行运行它,则可以尝试一种解决方法,即创建可在 中使用的环境变量physicalPath
。
例如如果你有两个文件:运行_在_iisexpress.ps1和run_on_iisexpress_applicationhost.config在一个目录中。在运行_在_iisexpress.ps1运行 IIS 的脚本,您可以创建一个具有绝对 URL 的环境变量。
运行_在_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>
...