Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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
C# 如何使用WCF发送在远程计算机上使用的用户凭据?_C#_.net_Wcf_Windows Services_Permissions - Fatal编程技术网

C# 如何使用WCF发送在远程计算机上使用的用户凭据?

C# 如何使用WCF发送在远程计算机上使用的用户凭据?,c#,.net,wcf,windows-services,permissions,C#,.net,Wcf,Windows Services,Permissions,我有两台机器,我们称它们为机器A和机器B。机器B运行的是以C#.net编写的Windows服务,作为本地系统帐户。机器A通知机器B的服务(使用WCF)打开位于网络上的文件。由于本地系统不是网络用户,因此无法访问网络文件,无法打开文件。目前,我正在从机器A读取文件,并将它们作为字符串序列化到机器B,然后在本地将它们写入机器B。我考虑为机器B创建一个通用网络帐户,以便它可以访问网络,但这是不可取的。有没有办法让机器B使用机器A的用户帐户打开文件?我已经查看了系统安全主体的标识类,是否可以使用它们?

我有两台机器,我们称它们为机器A和机器B。机器B运行的是以C#.net编写的Windows服务,作为本地系统帐户。机器A通知机器B的服务(使用WCF)打开位于网络上的文件。由于本地系统不是网络用户,因此无法访问网络文件,无法打开文件。目前,我正在从机器A读取文件,并将它们作为字符串序列化到机器B,然后在本地将它们写入机器B。我考虑为机器B创建一个通用网络帐户,以便它可以访问网络,但这是不可取的。有没有办法让机器B使用机器A的用户帐户打开文件?我已经查看了系统安全主体的标识类,是否可以使用它们?

在Windows上模拟客户端 通信基础(WCF)服务 使服务能够执行操作 代表客户。行动 受访问控制列表(ACL)约束 检查,例如访问目录 和计算机上的文件或访问 SQL Server数据库,ACL检查为 针对客户端用户帐户


另外,不要忘记将您的服务配置为使用Windows身份验证并使用受支持的绑定。

好的,看起来它基本正常工作,但是当我检查client.ClientCredentials.Windows.ClientCredentials.UserName时,它似乎为空。看起来这不是从Active Directory获取我的凭据,但其他一切似乎都正常运行。@MGSoto,ClientCredentials.Windows.ClientCredentials.UserName不是用于检索客户端凭据,而是用于在必要时提供一组不同的Windows凭据(基本上是一个仅限集合的属性),要获取当前用户,请使用Environment.UserName或System.Windows.Forms.SystemInformation.UserName…但也有其他方法,这是有意义的。我希望它能告诉我它会考虑登录的用户。你知道为什么我仍然会遇到访问被拒绝的错误吗?我几乎是逐字逐句地关注MSDN,唯一的区别是我没有添加数字,而是打开了一个文件。