Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WCF仅本地命名管道_Wcf_Named Pipes_Self Hosting_Usersession - Fatal编程技术网

WCF仅本地命名管道

WCF仅本地命名管道,wcf,named-pipes,self-hosting,usersession,Wcf,Named Pipes,Self Hosting,Usersession,这是我的问题的一个简单例子。我正在编写一个应用程序,它自己托管一个WCF服务,只用于用户会话中的通信。当多个用户在终端服务计算机上同时运行此应用程序时,所有用户都很高兴,只要他们没有本地管理员权限。如果两个或多个用户是管理员,则问题开始出现,第一个用户创建服务,第二个用户创建服务,因为服务是全局创建的 没有WCF的简单Win32实现将创建一个带有“Local\”前缀的命名管道。WCF似乎首先尝试创建全局共享内存映射,失败后,再创建本地映射 是否有人找到了一种方法来自行托管当前用户会话本地的WCF

这是我的问题的一个简单例子。我正在编写一个应用程序,它自己托管一个WCF服务,只用于用户会话中的通信。当多个用户在终端服务计算机上同时运行此应用程序时,所有用户都很高兴,只要他们没有本地管理员权限。如果两个或多个用户是管理员,则问题开始出现,第一个用户创建服务,第二个用户创建服务,因为服务是全局创建的

没有WCF的简单Win32实现将创建一个带有“Local\”前缀的命名管道。WCF似乎首先尝试创建全局共享内存映射,失败后,再创建本地映射


是否有人找到了一种方法来自行托管当前用户会话本地的WCF服务,即使该用户是本地管理员?

简单的方法就是让每个实例使用不同的服务URL(从用户会话的某些特征中派生出来,使其唯一-例如会话登录ID)


如果WCF绑定以足够的权限在全局命名空间中发布其端点详细信息(也称为真正的管道名称),则无法停止该绑定。但是,如果您的服务发现它以管理员身份以提升权限运行,您可以在打开服务主机之前调整进程令牌权限以禁用SeCreateGlobalPrivilege。

看起来不错,我只是不明白为什么microsoft在使用namedpipes时没有指定作用域。。。