%% MESCommonBase 响应输出与 SqlWebCall 主流程图
flowchart TD
A([MESCommonBase.ashx
ProcessRequest])
B[解析请求并取得 type
JSON body / jsonobj / Request param]
C{switch(type)}
A --> B --> C
C -->|2001/2002/2003/2004/16| D[文件下载类分支
生成或读取 bytes/fileName/extension]
C -->|15| E[文件上传分支
读取 Request.Files[0]
调用 ExePROCEDURE_Type15]
C -->|4000| F[IP 查询分支
读取 ServerVariables / UserHostAddress]
C -->|default| G[普通业务分支
DataLink.SqlWebCall(type,jsonData,dataobj)]
D --> D1{bytes 是否有效?}
D1 -->|是| R1[二进制下载响应
Content-Type: application/octet-stream
Content-Disposition: attachment
BinaryWrite + Flush + End/Close]
D1 -->|否
主要见 Type=16| R0[直接 return
可能为空响应]
E --> R2[JSON 文本响应
Response.Write(responseText)
常见 result=1 / result=0]
F --> R3[文本 IP 响应
Response.Write(userIP)
Content-Type 仍可能是 application/json]
G --> G1[SqlWebCall 返回字符串
数组 JSON / code-message-data / 空字符串]
G1 --> R2
A -.外层 catch(Exception err).-> X[异常兜底
不记录异常
Response.Write(responseText)
初始 responseText = NULL]
X --> END([请求结束])
R1 --> END
R0 --> END
R2 --> END
R3 --> END
subgraph WARN[主流程注意点]
W1[Response.End 位于 try 内
可能触发 ThreadAbortException]
W2[响应格式不统一
二进制 / JSON / 文本 / NULL / 空响应]
W3[default 分支执行能力强
依赖 SqlWebCall 内部 Type 二次分发]
end
END --> WARN