Skip to main content
 首页 » 编程设计

c#之Web 服务不返回当前 Windows 用户名

2024年02月03日30kenshinobiy

这是我在 web 服务中用于获取当前 windows 用户的函数。

 <WebMethod()> _ 
  Function User() As String 
        Dim p() As String = Split(My.User.Name, "\") 
        Dim p1 As String = p(1) 
        Return p1 
    End Function 

当我在本地主机上运行服务时,它确实返回当前的 Windows 用户名! 问题是当我从远程 PC 运行服务时,在这种情况下我从该功能中一无所获。此服务有什么问题,我如何获取 Windows 用户的名称?

谢谢!

请您参考如下方法:

您希望它返回什么:来电者的身份?或运行网络服务的服务帐户的身份?

在大多数情况下,windows 标识将取决于服务器的配置方式;它在使用模拟吗?另外,您是否在调用该服务时传递了调用者的身份?例如,UseDefaultCredentials 或 Credentials。服务是否配置为识别用户声明?

一般来说,我尽量不使用模拟;它需要在服务器上进行提升,不支持所有环境,并且会对池的有效性产生重大影响 - 所以我不希望 windows 身份流动,但如果你通过某种形式的调用者身份我可能希望“主体”(Thread.CurrentPrincipal)代表调用者。

我不记得是从 asmx 开始的,但是如果需要,您可以使用 WCF 编写自己的代码以根据您自己的身份验证方案设置主体。