C # Закрытые переменные в классах через вызовы веб-службы не работают? - PullRequest
1 голос
/ 26 июля 2011

Я пытаюсь выяснить, какой пользователь вызывает мой веб-сервис.Для этого я бы хотел передать в Environment.UserName.Однако, если это просто строка, то любой, кто пишет свой собственный клиент, может просто вставить «asdf» и обойти то, что я пытаюсь сделать.Итак, в моем веб-сервисе объявлен открытый класс:

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();

в моем клиенте, я думал, что он получит мою информацию ("Домен / Я наМой компьютер").Это не.Веб-служба получит свою информацию («NT AUTHORITY / NETWORK SERVICE на ServerComputer»)

Есть ли возможность пересмотреть мой код, чтобы заставить его работать?Возможно ли это с моим решением?Есть ли лучший способ?

1 Ответ

1 голос
/ 26 июля 2011

Я не думаю, что вы хотите использовать окружающую среду.Похоже, все, что вы делаете, - это получение домена, имени пользователя и компьютера, на котором работает служба, а не пользователя, пытающегося получить доступ к службе.

Я считаю, что вам нужен объект WebService.Context .Это дает вам доступ к информации о клиенте HTTP.

...