У меня есть приложение 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 вызывается, но я не могу войти в него.Символы отладчика не загружаются.