Где я должен прочитать мое имя пользователя и пароль для моей службы WCF? - PullRequest
4 голосов
/ 16 мая 2011

У меня есть приложение WPF с одной кнопкой.Когда кнопка нажата, все, что она делает, это открывает сервис.Вот код:

 private void button1_Click(object sender, RoutedEventArgs e)
    {
        ServiceReference1.TestServiceClient c = new ServiceReference1.TestServiceClient();

        XDocument doc = XDocument.Load(@"c:\Test\Test.xml");

        c.ClientCredentials.UserName.UserName = doc.Root.Element("Credentials").Attribute("username").Value;
        c.ClientCredentials.UserName.Password = doc.Root.Element("Credentials").Attribute("password").Value;

        try
        {
            c.Open();
        }
        catch (Exception ex)
        {

        }
    }

Как вы можете видеть выше, я читаю имя пользователя и пароль из узла Credentials в xml-файле для проверки клиента.Правильно ли разместить его здесь, потому что изначально он был определен в моем методе Validate:

 public override void Validate(string userName, string password)
    {

       // XDocument doc = XDocument.Load(@"c:\Test\Test.xml");

       // userName = doc.Root.Element("Credentials").Attribute("username").Value;
      //  password = doc.Root.Element("Credentials").Attribute("password").Value;


        if (string.IsNullOrEmpty(userName))
            throw new ArgumentNullException("userName");
        if (string.IsNullOrEmpty(password))
            throw new ArgumentNullException("password");

        // check if the user is not test
        if (userName != "test" || password != "test")
            throw new FaultException("Username and Password Failed");
    }

Но проблема с вышесказанным заключается в том, что все, что я передаю в c.ClientCredentials.UserName.UserNamec.ClientCredentials.UserName.Password переопределяется при достижении метода Validate.Например, в моем нажатии кнопки, если у меня просто есть:

c.ClientCredentials.UserName.UserName = "test1";
c.ClientCredentials.UserName.Password = "test1";

Вышеперечисленное должно завершиться неудачно, но когда оно переходит в метод Validate, где я читаюXML-файл с атрибутом username и password в качестве test и test будет пройден.

В качестве примечания я заметил, что мой метод Validate вызывается, но я не могу войти в него.Символы отладчика не загружаются.

1 Ответ

1 голос
/ 21 мая 2011

вы перезаписываете параметр чтением

 public override void Validate(string suppliedUserName, string suppliedPassword){
     // ...
     string validUserName = doc.Root.Element("Credentials").Attribute("username").Value;
     string validPassword = doc.Root.Element("Credentials").Attribute("password").Value;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...