KeyNotFoundException出现在wp7中

时间:2012-12-11 09:55:15

标签: windows-phone-7

enter image description here 我创建了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");
        }
    }
}
}

3 个答案:

答案 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"/>