Silverlight WebService调用C#函数

近了看到SL(Silverlight)写网页的功能非常强大,所以就开始了解一下。

开始的时候想做一个简单的登录,结果这个登录就已经把我卡住了,因为在SL里只有很少一部分C#里的函数。

但我偏偏用到了 System.Security.Cryptography.DESCryptoServiceProvider  这个加解密算法。

SL里没有这个东东,我还查了一下连MD5的算法也没有,里面的函数少得可怜……

但我发现在项目.Web里是有这个加解密存在的,可是怎么样也不知道怎么调用.Web项目下的函数

加载.Web程序的时候会弹出一个:You can only add project references to other Silverlight projects in the solution. 

 

在CSDN里寻找帮助才知道有个叫WebService的东东可以解决这样的问题。 

开始研究WebService这东东了,查了一下有同学写这样的博客,我得到了一个很大的帮助。

在.Web工具里Add New Item工程,找到Web Service如图:

 

修改好名字点Add就可以了。我添加的名字就叫KisMemberWebService.asmx

然后在KisMemberWebService.asmx.cs里添加上函数

默认有一个HelloWorld,参数HelloWorld做就可以了!这里不详细再说了。

 

下一步到SL工程里Add Service Reference

 

在框口中点击Discover按钮,就会自动把所有的函数都列在Operations里面,再输入名字就可以了。 

 

现在你就可以看到你刚刚插入的Service项目了…… 

 

 

手工的操作都完成了,现在我们要开始调用里面的函数了,我们尝试调用一下DesEncrypt这个函数。

 

代码
//Button按钮的代码
private void login_Click(object sender, RoutedEventArgs e)
{
    KisMemberWebServiceProxy.KisMemberWebServiceSoapClient kisMember 
= new KisMemberWebServiceProxy.KisMemberWebServiceSoapClient();
    kisMember.DesEncryptAsync(
"7aaaaaa6aa4aaaa1"this.Passport.Text);
    kisMember.DesEncryptCompleted 
+= new EventHandler<HelloWorld.KisMemberWebServiceProxy.DesEncryptCompletedEventArgs>(userKismemberUsersCompleted);
}

void userKismemberUsersCompleted(object sender, HelloWorld.KisMemberWebServiceProxy.DesEncryptCompletedEventArgs e)
{
    
if (e.Error == null)
    {
        showDate(e.Result);
    }
    
else
    {
        showDate(
"error!");
    }
}

//最后显示结果
private void showDate(string content)
{
    MessageBox.Show(content, 
"登录", MessageBoxButton.OKCancel);
}

 

 

 

最后点一下登录Button就看到弹出的对话框了,嘻嘻…… 

 

 

posted @ 2010-11-24 15:58  小 蔡  阅读(1371)  评论(0编辑  收藏  举报