关于Silverlight通过WCF链接数据库报错的问题

jy0025910 2010-03-17 10:21:48
先谢谢下大家的帮助,我总算是可以用VS2008来编写SilverLight的程序了。
我根据http://www.silverlightchina.net/html/tips/2009/1229/503_2.html里的教程写了一个自己访问数据库的代码。
没有适用调用存储过程,而是自己写的SQL去访问,报了下面一个错误
bool _result = ((bool)(base.EndInvoke("GetUser", _args, result)));
communicationExcaption 上面那个东西没有找到。

下面的代码是我写到WCF Service.cs里的
public bool GetUser(string cUserName, string cPassword)
{
SqlConnection conn = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("select * form psnwkokyaku", conn);

try
{
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
return true;
}
finally
{
conn.Close();
}
}
麻烦大家帮忙看看。第一次使用WCF访问数据库。。。什么都不知道。
PS:在客户端调用,也就是xaml.cs里的什么:
client.GetUserCompleted += client_GetUserCompleted;
client.GetUserAsync("1","2");
这两行没看懂。。。实施第一行在执行的时候就进入WCF Service.cs的GetUser?但是我打断点又找不到。。。极度茫然。
PPS:如果大家有WCF访问数据库最初级的教程的话,也请大家告诉我。。。现在的我是完全搞不清楚状况了。。。
...全文
228 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jy0025910 2010-03-18
  • 打赏
  • 举报
回复
我用WebService也出过同样的一个错,不过是由于SQL拼错,后来在调用数据库的地方加了个catch才发现。。。= =
jy0025910 2010-03-18
  • 打赏
  • 举报
回复
还是没找到问题所在,我换成用WebService就能连接上了。整个一悲剧。用WebService貌似也一样。谢谢J大的指导
xingjunli 2010-03-18
  • 打赏
  • 举报
回复
尝试删除WCF引用重新添加进来,再进行调试一下看看
jv9 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jy0025910 的回复:]
引用 2 楼 jv9 的回复:

什么是“第一次使用WCF访问数据库。。。什么都不知道。”?

client.GetUserCompleted += client_GetUserCompleted;
client.GetUserAsync("1","2");

上面的代码要和原项目一起看,
DBServiceClient client = new DBServiceClient(n……
[/Quote]

bool _result = ((bool)(base.EndInvoke("GetUser", _args, result)));
这段代码你不能干涉。客户端自动生成代码。
jv9 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jy0025910 的回复:]
出的错就是远程服务器未找到,但是我已经按照教程上写的,使用的是basicHttpBinding来进行通信了的啊。。。
[/Quote]

远程服务器没有找到有很多种可能,但是可以确认WCF服务通讯是失败了。
你添加客户端Reference的时候成功了么? 可以尝试更新一下引用,然后重新Debug,看看哪里出错,另外,推荐你使用Fiddler进行抓取HTTP包,可以看到详细错误信息。
jy0025910 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 senr0816 的回复:]

你加上了有这句么?:
private string connectionString = WebConfigurationManager.AppSettings["DbServiceConnectionString"];

client.GetUserCompleted += client_GetUserCompleted;
client.GetUserAsync("1","2");
……
[/Quote]
这句我是加入了的,现在报出来的错,看不懂。。。
主要是怕代码贴出来太多,反而不容易看清楚,我就单独把出错的地方带出来了
jy0025910 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jv9 的回复:]

什么是“第一次使用WCF访问数据库。。。什么都不知道。”?

client.GetUserCompleted += client_GetUserCompleted;
client.GetUserAsync("1","2");

上面的代码要和原项目一起看,
DBServiceClient client = new DBServiceClient(new BasicHttpBindin……
[/Quote]
我的意思是第一次接触WCF。里面的代码看起来晕呼呼的,现在程序里出来一个
bool _result = ((bool)(base.EndInvoke("GetUser", _args, result)));
communicationExcaption 上面那个东西没有找到。
找不到解决办法了
jv9 2010-03-17
  • 打赏
  • 举报
回复
什么是“第一次使用WCF访问数据库。。。什么都不知道。”?

client.GetUserCompleted += client_GetUserCompleted;
client.GetUserAsync("1","2");

上面的代码要和原项目一起看,
DBServiceClient client = new DBServiceClient(new BasicHttpBinding(), address);

这里DBServiceClient 是service reference里的类,该类是调用的服务器端的WCF服务。
声明这个类实例client,就可以通过数据契约和契约成员调用服务器端的函数。

这样说能明白一些么?
这里有更多的Silverlight访问数据库资料
http://www.silverlightchina.net/html/zhuantixilie/2009/1210/387.html
senr0816 2010-03-17
  • 打赏
  • 举报
回复
你加上了有这句么?:
private string connectionString = WebConfigurationManager.AppSettings["DbServiceConnectionString"];

client.GetUserCompleted += client_GetUserCompleted;
client.GetUserAsync("1","2");
第一句表示为为GetUserCompleted事件(也就是查询完成的事件)添加一个处理程序,你可以看看C#的委托
第二句才表示调用函数,执行查询
jy0025910 2010-03-17
  • 打赏
  • 举报
回复
出的错就是远程服务器未找到,但是我已经按照教程上写的,使用的是basicHttpBinding来进行通信了的啊。。。

8,757

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧