通过Web服务调用的类中的c#私有变量不起作用

本文关键字:变量 不起作用 Web 服务 调用 通过 | 更新日期: 2023-09-27 18:03:21

我正在尝试找出哪个用户正在调用我的web服务。为此,我想传入Environment.UserName。但是,如果它只是一个字符串,那么任何人编写自己的客户端都可以输入"asdf"并绕过我正在尝试做的事情。所以在我的Web服务中声明了一个公共类:

public class UserInfo
{
    private string userName;
    public UserInfo()
    {
        userName = Environment.UserDomainName + "/" + Environment.UserName + " on " + Environment.MachineName;
    }
    public string getUserName()
    {
        return userName;
    }
}

现在当我调用:

ClientTest.ServiceReference.UserInfo user = new ClientTest.ServiceReference.UserInfo();
在我的客户端

中,我认为它会得到我的信息("Domain/Me on MyComputer")。但事实并非如此。web服务将获得它的信息("NT AUTHORITY/NETWORK service on ServerComputer")

有没有办法修改我的代码来让它工作?我的解决方案有可能实现吗?有没有更好的办法?

通过Web服务调用的类中的c#私有变量不起作用

我不认为环境是你想要使用的。看起来您所做的一切都是获取服务运行的域、用户名和机器,而不是试图访问服务的用户。

我相信你需要的是WebService。上下文对象。这使您可以访问有关HTTP客户机的信息。