• Silverlight用户无法注册之MySql.Data.dll不一致


    本篇博文记录本人解决一个"用户无法注册"的问题的过程

    1 问题描述:

    用户可以删除;但不能注册,也不能修改权限:

    图 1用户注册失败

    图 2修改用户权限出错

    2 解决过程

    1)粗暴方法:直接替换正确的工程

    我将一个正确的Access和DataService 工程替换掉原来出错的Access和DataService,依然出错。甚至,我将UserManage和DataAccessSilverlight两个工程一起替换,依然不起作用。

    图 3被替换掉的几个工程(这几个工程与用户管理相关)

    2)修改端口号

    鄙人曾经使用新的端口号发布DataService工程,也同样不起作用:

    图 4创建新的端口号

    3)替换数据库

    我甚至想到,有可能是数据库出现了问题,所以我连数据库也重新替换一个正确的,问题依然存在

    4)使用测试数据在DataService内调试

    上面提到的三种方法都是治标不治本。最根本的方法还是要调试服务本身。

    我曾经想到用IE的开发者工具可以捕获请求和回应的过程,但我无法理解其中的具体过程,而且也看不出问题。所以这条路也行不通。

    最终还是要到DataService工程下调试。

    首先需要看一下注册用户的网页函数定义:

    图 5注册用户函数

    这个函数的参数的类型是一个自定义的类,而不是基本数据类型,所以无法使用参数调试。如下图:

    图 6注册用户函数的调用

    为了解决这个问题,我们可以写一个测试函数:

    图 7测试函数

     

    通过跟踪测试函数,发现问题出在这里:cmd无法转化为MySqlCommand,cmd转化之后为null

    图 8问题错在:cmd无法转化为MySqlCommand

    我恍然大悟,应该是MySql.Data.dll的版本号问题。后来检查,发现这个工程下面引用了

    C:Program Files (x86)MySQLConnector.NET 6.9Assembliesv4.0

    这个路径下的MySql.Data.dll,其版本信息为:

    图 9默认库版本信息

    而正确的版本是:

    图 10目标库版本信息

    找到问题的原因之后,重新找到目标库,重新引用,即可以解决问题。

  • 相关阅读:
    php 为什么new一个对象后面要加一个反斜杠
    c# 判断当前时间是否在某一时间段内
    关于Entity Framework的概念及搭建
    mvc 读写txt文档
    winform :DataGridView添加一列checkbox
    使用filter进行登录验证,并解决多次重定向问题
    关于Select选中问题
    错误:Parameter '0' not found.Available parameters are [arg1, arg0, param1, param2]的解决方法
    sql-省市区
    设置oracle主键自增长
  • 原文地址:https://www.cnblogs.com/dowtowne/p/4645998.html
Copyright © 2020-2023  润新知