2

在此处输入图像描述 我创建了用于检查用户名、密码的 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");
        }
    }
}
}
4

3 回答 3

0

Reference.cs 中存在异常,这意味着是 WCF Web 服务而不是电话应用程序引发了错误。我建议您在运行时调试您的服务,找出引发错误的位置,并相应地修复/捕获它。

编辑: 刚刚注意到您对它在 ASP.NET 应用程序中运行良好的评论。这可能意味着没有正确接收到密钥。这也意味着您没有处理错误。

于 2013-01-21T10:19:03.333 回答
0

解决方案您在服务中修改文件 Web.config :

<endpoint address="" 
          binding="basicHttpBinding" 
          contract="WcfServiceForWinMobile.IWin7MobileService"/>
于 2013-11-18T17:48:01.213 回答
0

您应该仔细检查服务的绑定设置。我相信你只是WSHttpBinding为它配置。但是silverlight和windows phone 7不支持WSHttpBinding。唯一的绑定Windows Phone 7支持是BasicHttpBinding,因此您应该使用 配置您的服务BasicHttpBinding,然后客户端调用将起作用。

KeyNotFoundException是由于默认绑定 ( BasicHttpBinding) 不存在于服务的绑定列表中(仅WSHttpBinding在您的服务中找到)。

于 2013-02-17T07:53:55.237 回答