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这个函数。
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就看到弹出的对话框了,嘻嘻……