ASP的Internet/Intranet编程常见问题

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

问题描述

A. 无法正确运行ASP

  当我们建立了一个ASP文件,并且符合语法时,通过浏览器输入以下地址,或通过资源管理器打开浏览:
c:\inetpub\wwwroot\a.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>0 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的思路设计和编写程序,否则将事倍功半。

时间: 2024-09-20 04:03:16

ASP的Internet/Intranet编程常见问题的相关文章

基于ASP的编程常见问题

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

实现Internet/Intranet 所见即所得的打印功能

打印  实现Internet/Intranet 所见即所得的打印功能        随着Internet技术的飞速发展,越来越多的企业应用是基于Internet/Intranet.这样用户就可以通过浏览器(Browser)来完成各种数据的输入.查询功能.但由于目前浏览器的局限性,影响了它的一些应用.如HTML页面交互性不强.缺乏所见即所得的打印功能等.这些问题多是通过在网页中嵌入Java Applet.ActiveX等控件或是使用Plug-in来解决.本文介绍一种解决所见即所得的打印方案 一.浏

用ASP与SQL Server2000编程分页显示记录的通用方法

server|server2000|sql|编程|分页|显示 用ASP与SQL Server2000编程分页显示记录的通用方法 在工作中,因为需要,需要一个网络查询系统,所以进行了网页设计.以前进行网页编程时经常使用PHP语言和MySQL数据库,此次,因为限制,必须用ASP语言和SQL Server2000,所以对此进行了一些研读.发现,SQL Server和ASP配合没有象MySQL那样的   Select ... limit ... 语句从某条记录开始只取需要的记录的功能,显得比较不方便.

网络编程常见问题收藏

网络编程常见问题总结 串讲 收藏 网络编程常见问题总结 在网络程序中遇到的一些问题进行了总结, 这里主要针对的是我们常用的TCP socket相关的总结,可能会存在错误,有任何问题欢迎大家提出. 对于网络编程的更多详细说明建议参考下面的书籍 <UNIX网络编程> <TCP/IP 详解> <Unix环境高级编程> 非阻塞IO和阻塞IO: 在网络编程中对于一个网络句柄会遇到阻塞IO和非阻塞IO的概念, 这里对于这两种socket先做一下说明 基本概念: socket的阻塞模

ASP.NET AJAX客户端编程之旅(七)——剩下的问题(完结篇)

关于Loading... 相信做Ajax应用的朋友没有不使用loading的,不然网络延迟会让用户体验非常差,而且用户会不知道系统正在工作.那么当使用ASP.NET AJAX客户端编程时,怎么做loading呢? 我们先来分析一下loading应该什么时候显示,什么时候终止.一个典型的异步交互过程如下: 1.用户发出请求 2.网络延迟 3.服务器端处理 4.服务器返回数据 5.网络延迟 6.客户端呈现数据 在这个交互过程中,loading应该在第一步后出现,而在第六步结束后才消失.结合前面的知识

ASP.NET AJAX客户端编程之旅(五)

ASP.NET AJAX客户端编程之旅(五)--以组件的思想开发Ajax应用:行为.绑定及xml-script 初识行为组件 行为组件一词中的"行为"是从单词Behavior直译过来的.但是我个人认为,就其作用来说,应该叫"属性赋予组件"更合适一点.因为行为组件实际的作用是:为某一控件赋予某种属性.例如ClickBehavior是为某个控件添加"具有单击事件"这个属性,而OpacityBehavior则是为控件添加"透明显示"

ASP.NET AJAX客户端编程之旅(四)

ASP.NET AJAX客户端编程之旅(四)--以组件的思想开发Ajax应用:客户端组件初探 以组件的思想重新审视Ajax客户端开发 在进入主题之前,我想和大家一起再来看一下本文章系列第一篇中的一个Demo:ASPNETAJAXTest.我现在将其中的客户端代码重新贴在这里. Default.aspx: 1<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs&q

ASP.NET AJAX客户端编程之旅(三)

ASP.NET AJAX客户端编程之旅(三)--让JavaScript和C#无障碍沟通:数据类型自动转换&序列化 通过前两篇文章,我们知道使用了ASP.NET AJAX框架后,在JavaScript中调用后台WebService方法非常方便,几乎可以看做是"直接调用".那么,这里引出了一个问题:调用方法就牵扯到参数的传递,而JavaScript和C#毕竟是两种不同的语言,数据类型怎么沟通?简单型数据类型还好说,如果我们需要的参数是个复杂类型呢?如分层架构中经常用到实体类做参数,

ASP.NET AJAX客户端编程之旅(二)——知其所以然

如何在客户端直接调用WebService中的方法? 1.Web.config中需要配置好运行ASP.NET AJAX框架相应的配置项,当然,建立一个ASP.NET AJAX Enabled Web Site项目时,Web.config已经配置好了. 2.想让某个WebService可以被JS调用,需要做一下几步: I.在这个WebService文件里用"using System.Web.Script.Services;"引入这个命名空间. II.在这个类的上面添加"[Scri