以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  移动开发页面访问有问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=122360)

--  作者:yellow
--  发布时间:2018/7/23 21:49:00
--  移动开发页面访问有问题
近来开发了两个简易的移动端系统。都出现同样的问题:访问设计好的网页,时常会显示为空白没任何内容的页面,刷新一两次才能正常显示内容。把服务端放在不同的电脑上情况都一样。这是什么情况?
--  作者:有点蓝
--  发布时间:2018/7/23 21:53:00
--  
网页代码贴出来看看,是不是做了什么长时间的操作?用日志跟踪一下后台有没有什么异常
--  作者:yellow
--  发布时间:2018/7/23 22:03:00
--  
刚开发好的时候好像没这个问题,前些天恰巧升级了Foxtable,并重新发布了系统后就有问题了,难道要怪升级?
--  作者:yellow
--  发布时间:2018/7/23 22:06:00
--  
\'通用事件头
Dim fl As String = ProjectPath & "web\\" & e.path
If filesys.FileExists(fl)
    Dim idx As Integer = fl.LastIndexOf(".")
    Dim ext As String  = fl.SubString(idx)
    Select Case ext
        Case ".jpg",".gif",".png",".bmp",".wmf",".js",".css" ,".html",".htm",".zip",".rar"
            e.WriteFile(fl)
            Return \'这里必须返回
    End Select
End If
Dim wb As New weui
\'身份验证
Dim Verified As Boolean \'用于标记用户是否通过了身份验证
Dim UserName As String = e.Cookies("username") \'从cookie中获取用户名
Dim Password As String = e.Cookies("password") \'从cookie中获取用户密码
If e.Path = "logon.htm" \'如果是通过登录页面访问,从PostValues即可中提取用户名和密码
    If e.PostValues.ContainsKey("username") AndAlso e.PostValues.ContainsKey("password")  Then
        UserName = e.PostValues("username") 
        Password = MD5Encrypt(e.PostValues("password"))
    End If
End If
\'读取数据库验证用户密码进行比较
If UserName IsNot Nothing Then
    UserName = System.Text.RegularExpressions.Regex.replace(UserName,"[+\\-\'#%/]", "") \'过滤掉非法字符
End If
Dim dr As DataRow
Dim filter As String = "[name] = \'" & UserName & "\'"
dr = DataTables("Uesers").Find(filter)
If dr IsNot Nothing Then
    If Password = dr("pw") Then
        Verified  = True
    End If
End If

If Verified AndAlso e.Path = "logon.htm"  Then \'如果用户访问的是登录页,且身份验证成功
    wb.AppendCookie("username",UserName) \'将用户名和密码写入cookie
    wb.AppendCookie("password",Password)
    wb.InsertHTML("<meta http-equiv=\'Refresh\' c>") \'直接跳转到首页
    e.WriteString(wb.Build) \'生成网页
    Return \'必须的
ElseIf Verified = False
    If e.path = "newuser.htm"
        wb.InsertHTML("<meta http-equiv=\'Refresh\' c>") \'直接跳转到注册页
    Else If e.path = "reset.htm" Then
        wb.InsertHTML("<meta http-equiv=\'Refresh\' c>") \'直接跳转到重置页
    Else If e.Path <> "logon.htm" Then \'如果用户身份验证失败,且访问的不是登录页面
        wb.InsertHTML("<meta http-equiv=\'Refresh\' c>") \'那么直接跳转到登录页面
        e.WriteString(wb.Build) \'生成网页
        Return \'必须的
    End If
End If

\'开始生成网页
Select Case e.path
    Case "logon.htm" \'登录页面
        Functions.Execute("Logon",e)
    Case "exit.htm" \'退出登录
        Functions.Execute("exit",e)
    Case "","default.htm" \'首页
        Functions.Execute("Default",e,UserName)
    Case "addnew.htm" \'增加
        Functions.Execute("AddNew",e,UserName)
    Case "edit.htm" \'编辑
        Functions.Execute("Edit",e,UserName)
    Case "delete.htm" \'删除行
        Functions.Execute("Delete",e,UserName)
    Case "list.htm" \'查看详情
        Functions.Execute("List",e,UserName)
    Case "gimima.htm" \'更改密码
        Functions.Execute("GiMima",e,UserName)
    Case "newuser.htm" \'查看详情
        Functions.Execute("NewUser",e)
    Case "reset.htm" 
        Functions.Execute("Reset",e)
End Select
e.WriteString(wb.Build) \'生成网页

--  作者:有点蓝
--  发布时间:2018/7/23 22:20:00
--  
使用日志跟踪一下:http://wechat.foxtable.com:9009/WebHelp/scr/we0008.htm

访问什么页面有问题;开始进入到页面返回用了多长事时间;页面空白的时候后台能否触发;触发后运行了什么代码,返回了什么数据;...........

页面空白的时候,按f12打开浏览器开发者工具,看有没有什么错误

--  作者:yellow
--  发布时间:2018/7/23 22:33:00
--  
没有报错,空白页面截图:

图片点击可在新窗口打开查看此主题相关图片如下:空白页.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2018/7/23 22:53:00
--  
1、请使用日志跟踪

2、检查Default函数

--  作者:yellow
--  发布时间:2018/7/23 23:18:00
--  
我把另一个也是有问题的项目发给您看看,这个超简单的或许更好找问题。
访问http://127.0.0.1/gl.htm/ 
点击几次“确定”就能看到我说的现象
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:有问题的项目和截屏视频.zip


--  作者:有点甜
--  发布时间:2018/7/24 9:47:00
--  

改成这样

 

Select Case e.Path
    \'Case ""
        \'\'调用自定义函数"yun"合成网页
        \'e.WriteString(Functions.Execute("yun"))
    Case "gl.htm"
        Functions.Execute("guanli",e)
        Return

    Case Else
       e.WriteString("糟糕,文件未找到!")
End Select

 

其中 e.WriteString 不要执行多次,有可能会导致冲突。

 


--  作者:yellow
--  发布时间:2018/7/27 21:55:00
--  
原来是这样,太感谢了!我这错误犯得有点愚蠢啊图片点击可在新窗口打开查看