CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  Web Services

web service 的方法返回的integer类型的,在客户端asp.net调用的时候出错

楼主huangyiping1()2005-06-04 07:08:09 在 .NET技术 / Web Services 提问

在web   service的方法是:  
  <WebMethod()>   Public   Function   GetSavedPassword(ByVal   strAcctID   As   String,byref   arPword   as   Byte())   as   integer  
                  arPword   As   Byte()  
   
                  '   创建连接数据库的   Connection   对象。  
                  Dim   arPword   As   Byte()  
   
                  Dim   cn   As   New   SqlConnection(DBConnection.ConnectionString)  
   
                  Dim   cmd   As   New   SqlCommand("spGetAccountPassword",   cn)  
   
                  '   设置该   Command   执行的是一个存储过程  
                  cmd.CommandType   =   CommandType.StoredProcedure  
   
                  '为存储过程添加参数。  
                  Dim   paramAcct   As   New   SqlParameter("@AccountID",   SqlDbType.Int,   100)  
                  paramAcct.Value   =   strAcctID  
                  cmd.Parameters.Add(paramAcct)  
   
                  '为存储过程添加参数,注意该参数为输出类型。  
                  Dim   paramPassword   As   New   SqlParameter("@Pword",   SqlDbType.Binary,   20)  
                  paramPassword.Direction   =   ParameterDirection.Output  
                  cmd.Parameters.Add(paramPassword)  
   
                  '   为存储过程添加返回参数,该参数的值如果为   0   则表示数据库操作失败,非   0   则为成功。  
                  Dim   paramReturn   As   New   SqlParameter("@ReturnValue",   SqlDbType.Int)  
                  paramReturn.Direction   =   ParameterDirection.ReturnValue  
                  cmd.Parameters.Add(paramReturn)  
   
                  Dim   iRetValue   As   Integer   =   DBResult.Success  
   
                  Try  
                          '   打开数据库连接,执行对数据库的操作。注意操作数据库会引发异常。  
                          cn.Open()  
                          '   Command   对象的   ExecuteNonQuery   方法用来执行不返回记录集的   SQL   语句或存储过程。  
                          cmd.ExecuteNonQuery()  
   
                          If   paramReturn.Value   =   1   Then  
                                  '如果返回参数的值为   1,则标识数据库操作成功。  
                                  arPword   =   paramPassword.Value  
                          Else  
                                  '否则标识数据库操作失败。  
                                  iRetValue   =   DBResult.Failed  
                          End   If  
   
                  Catch   e   As   Exception  
                          '   产生异常,则对   iRetValue   赋值标志数据库操作失败。  
                          iRetValue   =   DBResult.Failed  
                  Finally  
                          '   关闭数据库连接,以节省系统资源。  
                          If   cn.State   =   ConnectionState.Open   Then  
                                  cn.Close()  
                          End   If  
                  End   Try  
                 
   
                  Return   iRetValue  
   
   
   
  在客户端是asp.net,代码是:  
   
    Private   Sub   btnSummit_Click(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   btnSummit.Click  
   
                  '设立一个用户输入的密码是否正确的标志变量。  
                  Dim   bValidPassword   As   Boolean   =   False  
   
                  '保存哈希后的数据库密码  
                  Dim   arHashedSavedPass   As   Byte()  
   
                  'Dim   userID   As   Integer  
   
                  '保存反映数据库操作正确与否的返回值  
                  Dim   iRetValue   As   Integer  
   
   
                  '从数据库中获取用户正确的密码。  
                  Dim   log   As   New   Bank  
   
                  iRetValue   =   log.GetSavedPassword(txtAccountID.Text,   arHashedSavedPass)  
   
                  If   iRetValue   =   DBResult.Success   Then  
                          '如果数据库操作无误,则验证数据库密码和用户输入的密码。  
   
                          '对用户输入的密码进行   Unicode   编码。  
                          '在下面的代码中对用户输入的密码进行了哈希处理,采用的是   SHA-1   算法。  
                          '课本第二十四章有对散列数据和   SHA1Managed   类的详细介绍。  
                          Dim   UE   As   New   UnicodeEncoding  
                          Dim   arSuppliedPass   As   Byte()   =   UE.GetBytes(txtPassword.Text)  
   
                          '对上一步得到的   Unicode   编码值进行哈希处理。  
                          Dim   SHhash   As   New   SHA1Managed  
                          Dim   arHashSuppliedPass   As   Byte()   =   SHhash.ComputeHash(arSuppliedPass)  
   
                          '比较数据库密码和用户输入的密码两者的哈希值是否相等。  
                          Dim   bHashesEqual   As   Boolean   =   True  
   
                          Dim   x   As   Integer   'x   为循环变量  
                          For   x   =   0   To   arHashSuppliedPass.Length   -   1  
                                  If   arHashSuppliedPass(x)   <>   arHashedSavedPass(x)   Then  
                                          bHashesEqual   =   False  
                                          Exit   For  
                                  End   If  
                          Next  
   
                          If   bHashesEqual   Then  
                                  '如果相等,则标志变量为真。  
                                  bValidPassword   =   True  
   
                          Else  
                                  '否则显示密码错误信息。  
                                  lblInfo.Text   =   "密码错误,请重试!"  
                          End   If  
   
   
                  End   If  
                  If   bValidPassword   Then  
                          '如果用户登录名和密码都正确,则在会话间保存用户登录信息。  
   
                          '保存用户登陆帐号。  
                          Session("AccountID")   =   txtAccountID.Text  
   
                          Dim   strAccountID   As   String   =   txtAccountID.Text  
   
                          '新建一个客户端的Cookie   值。  
                          Dim   objNewCookie   As   New   HttpCookie("Bank")  
   
                          '设定   Cookie   的有效日期  
                          objNewCookie.Expires   =   DateTime.Now.AddDays(30)  
   
                          '添加   Cookie   子项。  
                          objNewCookie.Values.Add("AccountID",   strAccountID)  
   
                          '将   Cookie   值写入客户端  
                          Response.Cookies.Add(objNewCookie)  
   
   
                          Dim   sID   As   String   =   txtAccountID.Text.Trim()  
                          If   (FormsAuthentication.GetRedirectUrl(sID,   False).   _  
                                  IndexOf("default.aspx")   =   -1)   Then  
                                  '如果用户试图访问其他网页,则跳转到该网页。  
                                  FormsAuthentication.RedirectFromLoginPage(sID,   False)  
                          Else  
                                  '如果用户访问的是登录网页,则跳转到“用户需要服务”网页。  
                                  FormsAuthentication.SetAuthCookie(sID,   False)  
                                  Response.Redirect("Select.aspx")  
                          End   If  
   
   
                  End   If  
          End   Sub  
   
  在运行的时候出现了一个错误:  
   
  无法将xmlnode类型转换成integer类型.  
  请大家帮忙解决这个问题,谢谢  
  问题点数:0、回复次数:4Top

1 楼luckyprg(lucky)回复于 2005-06-06 16:39:12 得分 0

那就把数据类型转换一下嘛。Top

2 楼luckyprg(lucky)回复于 2005-06-06 16:40:27 得分 0

哦,不好意思,看错了,只看了你的标题,没看出错提示:  
   
  无法将xmlnode类型转换成integer类型.  
   
  这个很明显,xmlnode   是一个对象,肯定不能当成integer调用的,自己想一想,转换一下。Top

3 楼huangyiping1()回复于 2005-06-07 10:04:07 得分 0

我不知道该怎么转换,我转换了还是不行呢?  
  谢谢你的回答.Top

4 楼mouse0987(飞狐)回复于 2005-06-07 17:14:09 得分 0

请点这里,查看详细情况    
   
  http://www.lz.net.cn/bbs/X_AdvCom_Get.asp?UserID=7342Top

相关问题

  • asp调用视图出错
  • 调用出错???
  • WebService 调用出错!?
  • 调用outlook出错
  • 调用OleDbDataReader.GetString()出错
  • 调用mciSendCommand出错
  • DLL调用出错
  • 调用.dll出错
  • 调用 CreateCompatibleDC 出错
  • asp中调用dll生成excel文件出错,请帮忙。

关键词

  • asp.net
  • 数据库
  • 密码
  • 用户
  • 存储过程
  • 转换
  • 客户
  • 网页
  • iretvalue
  • arpword

得分解答快速导航

  • 帖主:huangyiping1

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo