通过Web服务恢复函数的结果并存储在变量中

时间:2014-11-28 22:39:53

标签: c# .net wcf silverlight

我想得到这个方法的结果:bool authentication(string log,string pass)和这个methode:string role(string log,string pass)来测试authentifcation 这就是我所做的:

private void bntValideAuthen_Click(object sender, RoutedEventArgs e)
{ 
    client.AuthentificationCompleted += client_AuthentificationCompleted;
    client.RoleCompleted += client_RoleCompleted;

      ServiceConsum.Service1Client client = new ServiceConsum.Service1Client();
     string rol=client.RoleAsync(txtLogin.text,txtpass.text);
     bool auth = client.AuthentificationAsync(txtLogin.text,txtpass.text);


    if((auth==true)&&(role=="admin"))
    {
      NavigationContext.Equals(new Uri("/Views/admin/starAdmin.xaml", UriKind.Relative));
    }
    else
    {
      message.BOX("error");
    }

    }

它给出了这个错误: 无法隐式转换类型' void'到'字符串'

2 个答案:

答案 0 :(得分:1)

以下代码启动异步调用 - 它不返回字符串 - 它是一个void方法 - 这是你的错误。

client.RoleAsync(txtLogin.text,txtpass.text)

您将获得结果作为方法client_RoleCompleted的参数。您已使用以下代码订阅了RoleCompleted事件:

client.RoleCompleted += client_RoleCompleted

答案 1 :(得分:0)

解决方案是: 在第二个事件中添加一个步骤,如:

 void client_RoleCompleted(object sender, RoleCompletedEventArgs e) { 
            role = e.Result.ToString();
            Thread.Sleep(1000);


        }