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

时间:2017-09-20 10:16:10

标签: c# iis windows-services iis-express

我正在使用 SUNDAY("sunday"), MONDAY("monday"), TUESDAY("tuesday"), UNKNOWN("unknown"); private final String value; DAY(final String value) { this.value = value; } private static final Map<String, DAY> VALUE_TO_TYPE = new HashMap<>(); static { Stream.of(DAY.values()).forEach(type -> VALUE_TO_TYPE.put(type.value, type)); } public String value() { return value; } public static DAY fromValue(final String value) { final DAY day = VALUE_TO_TYPE.get(value); return day != null ? day : UNKNOWN; } } [user@vm ~]$ sudo pmap 13727 | grep total total 3161064K [user@vm ~]$ sudo smem | grep -e '13727' -e 'PSS' PID User Command Swap USS PSS RSS 13727 activemq /usr/bin/java -Xms64M -Xmx1 0 212604 214962 229468 工具在安装我的软件期间向IIS Express添加网站,如下所示:

IIS Express

这样可以正常工作,并且该网站会添加到IIS Express中。

问题是,我后来需要从作为我的应用程序一部分的Windows服务的命令行启动IIS Express。我正在使用以下命令:

appcmd.exe

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

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

我收到以下错误:

iisexpress.exe /site:MySite

这有什么办法吗?我可以在IIS Express中“全局”(针对所有用户)注册网站吗?还有其他想法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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

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

这似乎运作良好。

PS:我知道“正确”的解决方案是使用完整的IIS,但遗憾的是项目经理坚持使用自包含的软件包。