微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 我应该在哪里阅读我的WCF服务的用户名和密码?

我有一个只有一个按钮的 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)
        {

        }
    }

从上面可以看到,我正在从xml文件中的Credentials节点读取用户名密码以验证客户端.将它放在这里是否合适,因为最初,我在我的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.UserName和c.ClientCredentials.UserName.Password到达Validate方法时都会被覆盖.例如,在我的按钮单击中,如果我只有:

c.ClientCredentials.UserName.UserName =“test1”;
c.ClientCredentials.UserName.Password =“test1”;

上面应该会失败,但是当它进入Validate方法,我读取了具有用户名密码属性作为test和test的xml文件时,它将通过.

作为旁注,我注意到我的Validate方法调用,但我似乎无法介入.调试器符号不会被加载.

解决方法

你正在用你的阅读覆盖参数

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;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐