我创建了WCF Web服务来检查用户名,密码,我使用MYSQL数据库检查用户名和密码是否存在。我在WP7中创建了应用程序,其中包含两个用于用户名,密码和登录按钮的文本框。当我运行应用程序时,将发生“KeyNotFoundException”。请告诉我原因。
my code is here
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using consumeWCFwp7DB.ServiceReference1;
namespace consumeWCFwp7DB
{
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
}
private void btnadd(object sender, RoutedEventArgs e)
{
ServiceReference1.ServiceClient obj = new ServiceReference1.ServiceClient();
string username = txtusername.Text.ToString();
string password = txtpassword.Text.ToString();
obj.loginAsync(username, password);
obj.loginCompleted+=new EventHandler<loginCompletedEventArgs> (obj_loginCompleted);
}
void obj_loginCompleted(object sender, loginCompletedEventArgs e)
{
if (e.Error == null)
{
MessageBox.Show(e.ToString());
}
else
{
MessageBox.Show("Error");
}
}
}
}
答案 0 :(得分:0)
例外是在Reference.cs中,这意味着它是WCF Web服务,而不是电话应用程序,它会抛出错误。 我建议您在运行时调试服务,找出错误发生的位置,并相应地修复/捕获它。
修改强> 刚刚注意到你对它在ASP.NET应用程序中运行良好的评论。这可能意味着密钥未被正确接收。这也意味着您没有处理错误。
答案 1 :(得分:0)
您应该仔细检查服务的绑定设置。我相信你只为它配置了WSHttpBinding
。但是Silverlight和Windows Phone 7不支持WSHttpBinding
。唯一绑定的Windows Phone 7
支持是BasicHttpBinding
,因此您应该使用BasicHttpBinding
配置服务,然后客户端调用就可以了。
KeyNotFoundException
是由于服务的绑定列表中不存在默认绑定(BasicHttpBinding
)(在您的服务中仅找到WSHttpBinding
)。
答案 2 :(得分:0)
解 您修改服务中的文件Web.config:
<endpoint address=""
binding="basicHttpBinding"
contract="WcfServiceForWinMobile.IWin7MobileService"/>