以文本方式查看主题 - Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp) -- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2) ---- 服务器异步函数 (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=159866) |
-- 作者:133198609 -- 发布时间:2021/1/12 0:08:00 -- 服务器异步函数 在服务器HttpServer中,主线程进行用户登录验证,是用同步函数还是异步函数呢? 目前用户集中访问的时候,服务器会出错,自动关闭,没有提示,不知道是不是以下代码出现的问题。
Case "Remuneration" Dim UserId As String Dim UserName As String Dim sb As New StringBuilder sb.AppendLine("<meta name=\'viewport\' c>") If e.GetValues.ContainsKey("code") Then Dim ul As String = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token={0}&code={1}" ul = CExp(ul,Functions.Execute("GetQYAccessToken"),e.GetValues("code")) Dim hc As new HttpClient(ul) Dim jo As JObject = JObject.Parse(hc.GetData) If jo("UserId") IsNot Nothing Then UserId = jo("UserId") End If Else UserId = e.Cookies("userid") End If Dim Verified As Boolean Dim drc As DataRow = DataTables("员工花名册").SQLFind("企业微信号ID =\'" & UserId & "\'") \'根据openid找出对应的行 If UserId > "" AndAlso drc IsNot Nothing AndAlso drc("微信权限") = True \'授权成功 Verified = True UserName = drc("姓名") e.AppendCookie("userid",UserId) \'将userid存储在Cookie中 ElseIf e.GetValues.ContainsKey("code") = False Then \'如果授权失败,且不是通过授权链接跳转而来,那么就跳转到授权链接 Dim ul As String = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_base&agentid={2}&state=STATE#wechat_redirect" Dim ul2 As String = UrlEncode(Vars("yyzy")) ‘yyzy为系统固定参数 ul = CExp(ul,Vars("qyid"),ul2,Vars("yyid")) ‘yyid为系统固定参数 sb.Append("<meta http-equiv=\'Refresh\' c>") e.WriteString(sb.ToString) Return ElseIf userid = "" Then e.WriteString("请从企业微信APP中进行访问") Return End If If Verified = False Then e.AppendCookie("userid",UserId) e.WriteString("<meta http-equiv=\'Refresh\' c>") ‘指向异步函数 Else e.WriteString("<meta http-equiv=\'Refresh\' c>") ‘指向异步函数 End If e.WriteString(sb.ToString) [此贴子已经被作者于2021/1/12 0:16:01编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/1/12 8:48:00 -- 最后一句代码去掉:e.WriteString (sb.ToString) e.WriteString不能重复调用,一次返回只能调用一次。 另外如果登录验证是在函数里的,请使用同步函数,以为其它页面肯定是要等待验证通过的
|