快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

基于ASP的编程常见问题

基于ASP技术开发Internet/Intranet上的MIS系统是异常方便的,首先是它借用了ADO技术和概念,同时通过ODBC访问数据库,达到了充分的灵活性和多平台性,另外,由于ASP利用VBS和JS脚本语言,也保证大多数开发者很快进入开发过程,减少了学习的过程。
  但是,由于ASP是基于Internet/Intranet方法的,它和传统的C/S结构究竟有所不同,这样在开发中也要注重一些细节问题。本文讲述常见的一些问题,并给出解决方式。
问题描述

A. 无法准确运行ASP

  当我们建立了一个ASP文件,并且符合语法时,通过浏览器输入以下地址,或通过资源治理器打开浏览:
c:inetpubwwwroota.asp
将出现无法运行的错误,并提示权限不对或文件无法访问,原因是,ASP文件首先要求站点是具备“执行(脚本)”属性的;然后要求按照URL格式输入地址,而不是DOS格式,所以,请改正这两个错误。

B. 程序移动位置后,无法访问数据库

  这种错误首先在ODBC,假如ODBC数据源设置准确,那么需要注重ASP中打开数据库的命令:Conn.Open 的参数是否准确。假如准确,则需要注重是否使用了global.asa文件,该文件是ASP连接数据库的配置文件,该文件内容如下:
<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
\\\'You can add special event handlers in this file that will get run automatically when special Active Server Pages events
\\\'occur. To create these handlers, just create a subroutine with a name from the list below that corresponds to the event
\\\'you want to use. For example, to create an event handler for Session_OnStart, you would put the following code into this
\\\'file (without the comments):
\\\'EventName Description
\\\'Session_OnStart Runs the first time a user runs any page in your application
\\\'Session_OnEnd Runs when a user\\\'s session times out or quits your application
\\\'Application_OnStart Runs once when the first page of your application is run for the first time by any user
\\\'Application_OnEnd Runs once when the web server shuts down

</SCRIPT>
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Session_OnStart
\\\'==Visual InterDev Generated - DataConnection startspan==
\\\'--Project Data Connection
Session("Customers_ConnectionString")="DRIVER={SQL Server};SERVER=(local);UID=sa;PWD=;APP=Microsoft(R)Developer Studio;WSID=GREGLEAK;DATABASE=Customers"
Session("Customers_ConnectionTimeout") = 15
Session("Customers_CommandTimeout") = 30
Session("Customers_RuntimeUserName") = "sa"
Session("Customers_RuntimePassword") = ""
\\\'==Visual InterDev Generated - DataConnection endspan==
End Sub
</SCRIPT>
要注重其中的DSN,其中SERVER后一定是数据库服务器名称,假如该处不准确,需要改正。另外是UID和PWD是否准确;还有,假如OPEN命令使用了SESSION,则需要注重
Session("Customers_RuntimeUserName") = "sa"
Session("Customers_RuntimePassword") = ""
是否准确。

C. RUNAT使用问题

  在脚本语法中,有RUNAT参数,表示该脚本是运行在服务器上还是客户机上。假如有RUNAT=SERVER则脚本运行在服务器上,由ASP解释程序来解释执行,并将结果传递给WWW服务器;否则就是运行在客户机上,由浏览器的脚本虚拟机解释执行,这时,和一般的脚本没有区别。所以,一定要注重ASP语法中的命令,如:REQUEST,QUERYSTRING,WRITE等命令或对象必须在具备RUNAT参数的脚本运行;而访问HTML的FORM对象的脚本一定没有RUNAT参数,因为HTML的FORM是客户机方面的对象,服务器无法访问。

D. 无法向SQL SERVER插入日期字段

  假如碰到必须使用美国日期格式插入日期的情况,则需要在服务器的区域设置上设置中国长日期格式,请特殊注重,ASP是在服务器上运行的,生成的HTML结果传递给浏览器,所以,所有格式设置必须在服务器上。

E. 如何向客户机推送提示信息

  假如在服务器上判定访问错误,如注册失败、无权操作记录等需要提示用户的信息。这个信息需要推送到客户机上,并出现提示窗口,这是常常碰到的问题。这个时候,必须使用动态页面的方法,因为错误是在服务器上判定的,而提示是在浏览器上出现的。我们 可以使用下面的ASP来推送错误:
on error resume next
conn=server.createobject("adodb.connection")
conn.open "pubs","wlf",""
\\\'假如注册失败则错误数大于0
if conn.errors.count? then
‘以下代码生成客户机上的脚本语言,提供应浏览器执行
response.write "<script language=javascript>" & chr(13)
response.write "{" & chr(13)
response.write " window.alert("您无权访问数据库!")" & chr(13)
response.write "}" & chr(13)
response.write "</script >" & chr(13)
end if

F. 客户机尽量使用固定IP地址

   由于ASP连接数据库是定时的,默认是:
Session("Customers_ConnectionTimeout") = 15
Session("Customers_CommandTimeout") = 30
两个设置决定的时间,超时后自动断开连接,所以,当刷新页面重新执行ASP代码时,假如IP分配时间不够(动态IP分配需要时间,比静态长很多!),可能无法连接上,则出现错误信息,所以尽量用静态IP地址。

总结

  使用ASP编程是很方便的。由于ADO跨越了ODBC,形成具备多线程处理能力的数据库操作方法,并且是在服务器上运行,虽然增加了服务器的压力,好在现在的服务器(哪怕是PC服务器)处理能力都异常强,这样反而发挥了服务器的效率。另外,由于ASP可以和ActiveX控件进行良好的接口,也使开发者轻易根据自己的需要扩充程序,并直接建立在ASP编程环境上,唯一需要注重的是,一定要以Internet/Intranet的思路设计和编写程序,否则将事倍功半。
返回类别: 教程
上一教程: ASP技术在论坛中的运用(二)
下一教程: 如何实现网页在线人数统计

您可以阅读与"基于ASP的编程常见问题"相关的教程:
· ASP的INTERNET/INTRANET编程常见问题
· ASP设计常见问题及解答精要
· ASP常见问题及解答精要(上)
· 使用ASP常见问题解答
· ASP常见问题(新手)
    微笑服务 优质保证 索取样品