为所有用户将网站添加到 IIS Express

Adding a website to IIS Express for all users

我在安装软件的过程中使用 IIS Expressappcmd.exe 工具将网站添加到 IIS Express,如下所示:

appcmd.exe add site /name:MySite /physicalPath:"C:\Program Files\MySite" /bindings:http://*:8087/

此操作正常,站点已添加到 IIS Express。

问题是,我稍后需要通过命令行从应用程序中的 Windows 服务启动 IIS Express。我正在使用以下命令:

iisexpress.exe /site:MySite

但是,从 Windows 服务启动的命令显然是问题所在。服务 运行 在 SYSTEM 帐户下,而站点是在安装时从安装程序添加的,该安装程序 运行 在当前登录用户的帐户下。因此,当我尝试使用以下命令列出网站时:

appcmd.exe list site

我收到以下错误:

ERROR ( message:Configuration error 
Filename: \?\C:\WINDOWS\system32\config\systemprofile\Documents\IISExpress\config\applicationHost.config
Line Number: 0
Description: Cannot read configuration file. )

有什么办法解决这个问题吗?我可以在 IIS Express 中注册网站 "globally"(对于所有用户)吗?还有其他解决这个问题的想法吗?

好吧,我找到了解决办法。首先,我复制位于以下位置的模板配置文件:

C:\Program Files\IIS Express\config\templates\PersonalWebServer\applicationhost.config

然后,我通过将以下(未记录?)参数添加到 appcmd 命令行来调用传入我的专用 .config 文件的 appcmd,而不是使用默认的共享文件:

/AppHostConfig:"C:\path\to\my\applicationhost.config"

当我调用 iisexpress.exe 启动网站时,我还添加:

/config:"C:\path\to\my\applicationhost.config"

这似乎很有效。

PS: 我知道 "proper" 解决方案是使用完整的 IIS,但不幸的是项目经理坚持要一个独立的包。