以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]请问QQServer的UserLogging是在什么情况下触发的?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=89943)

--  作者:无我是天机
--  发布时间:2016/9/1 18:02:00
--  [求助]请问QQServer的UserLogging是在什么情况下触发的?
在帮助文档中查看,说是在“有用户申请登录时触发”。可是,测试(没有使用的内置身份验证,用的外部数据源,在数据库中自建的User表)了很多遍发现一个问题:当客户端的登录用户不存在于User表中时根本就不会执行UserLogging中的代码。,总提示以下的错误当登录的用户存在于User表中时正常,不会有这个问题):
.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2016.7.29.1
错误所在事件:项目,Server
详细错误信息:
索引超出了数组界限。

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20160901180032.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2016/9/1 18:04:23编辑过]

--  作者:有点蓝
--  发布时间:2016/9/1 18:15:00
--  
以后麻烦代码直接贴出来,不要截图http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=69632

客户端登录的时候触发

1、保证登录用户名是“部门.名称”的格式
2、查询后判断一下
if dt.datarows.count > 0 then
\'......其它代码
end if


--  作者:无我是天机
--  发布时间:2016/9/1 19:31:00
--  
蓝版主,刚才试了还是不行,报一样的错。代码中已经按照您说的修改过了,用户名也是“部门.名称”的格式,还要烦请斑竹再帮忙看看。UserLogging中的代码见附件文档。(再补充说明一下:比如用户表中有张三、李四,那么用这两个用户名登录时,可以正常登录;但是小五在用户表中不存在,用它登录时UserLogging中的代码压根就不会执行,更不会像希望的结果那样弹出“用户名错误”的提示
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:代码.txt


--  作者:Hyphen
--  发布时间:2016/9/1 20:47:00
--  
Dim dt As DataTable
Dim cmd As New SQLCommand
cmd.C
\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'
Dim pts() As String = e.UserName.Split(".")
If pts.length = 2 Then
    Dim dr As DataRow
    cmd.CommandText = "Sel ect * From {Users} where [Department] = \'" & pts(0) & "\' And [Name] = \'" & pts(1) & "\'"
    dt = cmd.ExecuteReader
    If dt.datarows.count > 0 Then
        dr = dt.DataRows(0)
        If dr("Password") <> e.Password Then \'如果密码错误
            e.Message  = "登录密码错误!" \'返回给登录者的提示信息
            Return
        End If
    Else
        e.Message  = "用户名错误!" \'返回给登录者的提示信息
    End If
    
End If

--  作者:无我是天机
--  发布时间:2016/9/1 22:33:00
--  
谢谢楼上,问题完美解决!