2

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

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

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

这个问题完美的描述了我的第一期网址预约

4

1 回答 1

1

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

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

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

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

于 2013-03-27T13:54:53.533 回答