Web Connection开发常见错误及解决方案
Web应用程序开发是一个复杂的领域,无论选择何种开发工具,都有很多需要学习的地方。在Web Connection开发过程中,开发者常常会遇到一些常见的错误。下面将对这些错误进行分类整理,并给出相应的症状、原因和解决方案。
1. 错误分类
Web Connection开发中常见的错误可分为以下七类:
- 安装与设置问题
- Visual FoxPro开发问题
- 脚本和模板特定问题
- 操作问题
- COM和基于文件的消息传递问题
- 调试问题
- 电子邮件和客户端工具问题
2. 安装与设置问题
| 症状 | 原因 | 解决方案 |
|---|---|---|
| 安装新版本后,仍显示“共享软件”消息 | 共享软件版本的特定文件仍保留在磁盘上 | 删除WConnect.APP文件 |
| 安装新版本后,之前对Web Connection默认行为的更改不再被识别 | 直接更改了Web Connection框架文件,新版本覆盖了这些更改 | 不要直接更改框架,使用创建子类的技术 |
| 安装新版本后,之前的框架子类不再被识别 | 对WCONNECT.H的更改被新版本覆盖 | 将所有覆盖信息放在WCONNECT_OVERRIDE.H文件中 |
| 安装新版本后,应用程序不再响应Web请求 | 解压新版本后运行设置程序,至少有一个设置值与之前不同 | 确定更改的设置并恢复正确值 |
| 首次运行基本Web Connection示例应用程序时,浏览器显示“访问被拒绝”错误 | 匿名用户对临时目录没有完全访问权限 | 授予匿名用户(iusr_ )对应用程序临时目录的完全访问权限 |
以下是安装与设置问题的处理流程:
graph TD;
A[安装新版本] --> B{是否有问题};
B -- 是 --> C{具体症状};
C -- 共享软件消息 --> D[删除WConnect.APP文件];
C -- 默认行为更改不识别 --> E[创建子类];
C -- 框架子类不识别 --> F[使用WCONNECT_OVERRIDE.H文件];
C -- 应用程序不响应请求 --> G[恢复设置值];
C -- 访问被拒绝 --> H[授予匿名用户权限];
B -- 否 --> I[正常使用];
3. Visual FoxPro开发问题
| 症状 | 原因 | 解决方案 |
|---|---|---|
| 使用共享软件版本构建项目时遇到错误 | 共享软件版本无法创建可执行文件 | 升级到完整版,或从命令窗口运行应用程序 |
| 某些表单变量被截断、不正确或丢失 | 表单使用了HTTP的GET方法而非POST方法 | 使用POST方法,并使用Form()方法读取变量 |
| 一个用户似乎获取了另一个用户的结果、权限或会话设置 | 使用了公共或应用程序范围的私有变量来记录特定用户会话信息 | 理解Web应用的无状态性质,避免使用应用程序范围的变量 |
| 使用Web Connection管理控制台创建新项目后,找不到MyProcess.PRG文件 | 由于文件冲突,向导未添加某些文件 | 关闭管理控制台,从VFP项目管理器重新构建项目 |
| 在开发机器上构建并执行EXE文件时应用程序正常,但从命令窗口运行时不正常 | 主程序与项目和EXE文件位于不同文件夹 | 将主程序移动到与项目相同的文件夹 |
以下是Visual FoxPro开发问题的处理流程:
graph TD;
A[进行Visual FoxPro开发] --> B{是否有问题};
B -- 是 --> C{具体症状};
C -- 构建项目错误 --> D[升级版本或从命令窗口运行];
C -- 表单变量问题 --> E[使用POST方法和Form()方法];
C -- 用户信息混淆 --> F[避免使用应用范围变量];
C -- 找不到文件 --> G[重新构建项目];
C -- 运行异常 --> H[移动主程序文件夹];
B -- 否 --> I[正常开发];
4. 脚本和模板问题
| 症状 | 原因 | 解决方案 |
|---|---|---|
| 在模板中使用Response.Write()语句,结果出现在输出开头而非预期位置 | 模板不支持Response.Write(),仅脚本支持 | 在代码块末尾返回字符串 |
| 脚本/模板中的表达式似乎未被求值 | 应用程序中设置了SET EXACT ON | 避免设置EXACT为ON,必要时在使用后立即关闭 |
| 使用模板或脚本时,自定义HTTP头被忽略 | ExpandScript()和ExpandTemplate()方法会创建自己的头,除非显式传递参数 | 将头对象作为第二个参数传递给方法 |
| 遇到变量未找到等类似错误 | 变量为LOCAL而非PRIVATE,或在代码中声明过晚 | 将代码块中的变量声明为PRIVATE,并在控制结构开始前声明 |
以下是脚本和模板问题的处理流程:
graph TD;
A[使用脚本和模板] --> B{是否有问题};
B -- 是 --> C{具体症状};
C -- Response.Write()位置问题 --> D[返回字符串];
C -- 表达式未求值 --> E[避免设置SET EXACT ON];
C -- 自定义头被忽略 --> F[传递头对象参数];
C -- 变量未找到 --> G[声明为PRIVATE并提前声明];
B -- 否 --> H[正常使用];
5. 操作问题
| 症状 | 原因 | 解决方案 |
|---|---|---|
| 浏览器中显示HTTP头(如以HTTP 1.1 200 OK开头的文本) | 响应中发送了两个HTTP头 | 避免重复调用插入完整头的方法 |
| 在Windows 95或Windows 98上,脚本映射不能正常工作 | PWS对脚本映射支持不佳,有多个映射时易出问题,添加映射后需重启 | 移除不需要的脚本映射,将创建的映射移到列表顶部,更改后重启机器 |
| Cookie消失或每次访问都写入新Cookie | 代码使用AddCookie()时未考虑客户端已有Cookie,或客户端不接受Cookie | 检查并修正代码,考虑使用InitSession()方法;若客户端不接受,可尝试说服或采用“车牌”方法 |
| 用户接收不到Cookie,导致重复登录表单和空会话变量 | 尝试将HTTP重定向与发送Cookie结合,或部分用户浏览器设置不接受Cookie | 避免在同一响应中重定向和发送Cookie;对于不接受的用户,参考上一问题解决方案 |
| 客户端正确输入用户名和密码后仍不断收到登录表单 | 用户认证存储不正确或过期过早,客户端可能关闭了Cookie | 参考上一问题解决方案 |
| 客户端收到“文件下载”对话框,提示下载WC.DLL | IIS中虚拟目录的执行权限设置不正确 | 将执行权限设置为“仅脚本”或“脚本和可执行文件” |
| 应用程序间歇性崩溃,出现C0000005错误 | 索引或备注字段损坏 | 尝试隔离问题,修复损坏源,必要时从备份恢复 |
| 安装证书并切换到HTTPS URL后,应用程序未收到访问请求 | IIS未设置监听443端口的HTTPS流量 | 在IIS网站属性的“网站”选项卡中指定监听443端口 |
| 没有访问请求被处理,浏览器长时间延迟后显示超时消息 | WC.INI和应用程序INI文件中的临时文件路径或模板设置不匹配 | 确保两个文件中的路径和模板设置一致 |
| 浏览器无法连接到开发机器上的应用程序,即使已安装本地Web服务器 | TCP/IP未加载,或使用的Microsoft Internet Explorer版本有bug | 对于TCP/IP未加载,可尝试拨号加载;对于IE bug,可打补丁或升级 |
| 修改WC.INI中的AdminUser设置后未生效 | WC.DLL仅允许AdminUser设置中的用户进行管理更改,更改后需重启IIS | 手动修改WC.INI文件,停止并重启IIS |
| 返回PDF文件时用户看到空白屏幕 | Microsoft Internet Explorer兼容性问题 | 将文件写入磁盘,返回包含文件链接的HTML响应;或检查浏览器问题并建议用户升级 |
| 用户反复收到认证对话框,输入有效网络用户ID和密码后仍无法访问应用程序 | 未启用基本(或“明文”)认证 | 至少为虚拟目录启用基本认证 |
| 运行Web Connection COM服务器时,Internet Information Server管理控制台(MMC)锁定 | 未诊断出的bug,推测与IIS管理界面或Visual FoxPro COM服务器有关 | 运行IIS重启程序(IISReset.EXE) |
以下是操作问题的处理流程:
graph TD;
A[应用程序运行] --> B{是否有问题};
B -- 是 --> C{具体症状};
C -- 显示HTTP头 --> D[避免重复调用头方法];
C -- 脚本映射问题 --> E[调整映射并重启];
C -- Cookie问题 --> F[检查代码或采用其他方法];
C -- 接收不到Cookie --> G[避免重定向和发送结合或参考上方案];
C -- 重复登录 --> H[参考上方案];
C -- 下载WC.DLL --> I[设置执行权限];
C -- 崩溃错误 --> J[修复损坏或恢复备份];
C -- HTTPS无响应 --> K[设置监听端口];
C -- 无访问处理 --> L[确保设置一致];
C -- 无法连接 --> M[加载TCP/IP或升级IE];
C -- AdminUser未生效 --> N[修改文件并重启IIS];
C -- PDF空白 --> O[写入磁盘并返回链接或升级浏览器];
C -- 认证问题 --> P[启用基本认证];
C -- MMC锁定 --> Q[运行重启程序];
B -- 否 --> R[正常运行];
6. COM和基于文件的消息传递问题
| 症状 | 原因 | 解决方案 |
|---|---|---|
| 在基于文件模式下运行时,浏览器中收到COM调用错误消息 | WC.INI中的设置被更改为Mechanism=Automation | 将设置改回Mechanism=File,检查AdminUser设置 |
| 在COM模式下运行时,遇到众多Web服务器问题,包括参数错误、访问被拒绝和COM对象调用错误等,且COM服务器加载后无法卸载 | 虚拟目录未设置为“低”隔离模式 | 使用IIS将每个Web Connection虚拟目录的应用程序隔离级别设置为“低” |
| 运行多个服务器实例时遇到问题,且每个实例的Windows进程ID相同 | Visual FoxPro项目构建时服务器实例化设置为“多用途” | 将可执行文件构建为“单用途”,在项目管理器中更改设置并重新构建 |
| 切换到COM操作后,应用程序行为略有不同,似乎忽略了环境设置或在基于文件模式下有效的其他代码 | 重要代码放在了主程序中第一个DEFINE CLASS语句之前的初始代码中 | 重新调整代码位置 |
以下是COM和基于文件的消息传递问题的处理流程:
graph TD;
A[进行COM或文件模式操作] --> B{是否有问题};
B -- 是 --> C{具体症状};
C -- COM调用错误 --> D[更改设置并检查AdminUser];
C -- Web服务器问题 --> E[设置低隔离模式];
C -- 多实例问题 --> F[构建为单用途并重建];
C -- 行为异常 --> G[调整代码位置];
B -- 否 --> H[正常操作];
综上所述,在Web Connection开发过程中,会遇到各种各样的问题,但只要我们了解这些常见问题的症状、原因和解决方案,就能更高效地进行开发和调试,确保应用程序的稳定运行。
超级会员免费看
530

被折叠的 条评论
为什么被折叠?



