WCF ServiceHost受限用户netsh / httpcfg

时间:2013-03-19 17:44:00

标签: wpf wcf user-permissions netsh

我在WPF应用程序中使用自托管服务来执行某些任务。服务主机在运行时启动,其基址为http://localhost:Whatever-port-is-free-at-runtime。当用户具有管理员权限但在受限用户运行应用程序时出现问题时,此方法可以正常工作。

我在网上发现了一些建议,建议使用netsh/httpcfg保留网址,这对管理员用户来说很好,但对受限用户失败,因为他们可能没有权利使用这些工具来保留网址。由于端口号直到运行时才知道,因此url reservation命令在逻辑上只能在运行时运行,这意味着该进程将由受限用户启动而没有正确的权限来执行该命令。我在想这个是正确的吗?

我想知道的是,是否有合适的工作?此外,我想知道受限制的用户是否可以打开本地托管的WCF服务,因为如果受限制的用户无法解决上述问题将毫无意义。

This question perfectly describes my first issue of URL reservation

1 个答案:

答案 0 :(得分:1)

在WCF中,HTTP和HTTPS绑定使用封面下的HTTP.sys为特定WCF服务保留所需的URL,这与IIS管理的网站绑定时遵循的路径相同。这解释了为什么执行HTTP / HTTPS绑定的进程需要在提升模式下运行。

话虽如此,我会以两种不同的方式解决您的问题:

选项1:使用其他类型的绑定。例如,NetTcpBindingNetNamedPipesBinding 通常不需要管理权限:这是迄今为止最简单的方法。

选项2:在安装时设置所需的命名空间预留。这样,您可以要求用户在提升模式下执行安装,然后允许受限制的帐户运行它。在执行初始安装/预留时,您还可以找到可用的端口(可能将其保存在配置文件中以供以后重用)。