您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网 > 源码下载 > asp源码下载 >

ASP常见问题全集

大小:170 人气: 2010-02-10 需要积分:0
$北方$的空间

用户级别:注册会员

贡献文章:

贡献资料:

ASP常见问题全集

 如何保护自己的ASP源代码不泄露?
    解答:下载微软的windows script encoder,对ASP的脚本和客户端javascript、vbscript脚本进行加密。客户端脚本加密后,只有ie5以上的版本才能执行,服务器端脚本加密后,只有服务器上安装有script engine 5(装ie5即可)才能解释执行。

   为什么global.asa文件总是不起作用?
    解答:只有把global.asa文件放在web发布目录某个站点的根目录下它才有效,放在发布目录的某个子目录下不起作用。另外,也可以使用iis4的internet service manager把某个子目录设置为站点。

   为什么ASP文件总不解释执行?
    解答:在iis服务器上没有给ASP文件以脚本解释的权限,所以ASP文件没有被web服务器作为脚本代码进行解释执行,而被当成一般页面文件了。建议在web发布目录中建立一个ASP目录,把所有ASP文件存放在此目录下,把ASP目录赋予脚本解释权限。

   ASP文件中使用response.redirect(url)时导致错误“the http headers are already written to the client browser. any http header modificaTIons must be made before wriTIng page content”,请问如何解决?
    解答:此错误为http标题在写入页内容之后,写到了客户浏览器中。任何http标题的修改必须在写入页内容之前进行,解决的方法为在ASP文件最开头加入response.buffer = true,在文件的结尾加入response.flush。

   为什么session有时候会消失?
    解答:session很像临时的cookie,只是其信息保存在服务器上(客户机上保存的是sessionid)。session变量消失有几种可能,如:使用者的浏览器不接受cookie,因为session依赖于cookie才能跟踪用户;session在一段时间后过期了,缺省为20分钟,如果希望更改,可以通过设置microsoft management console的web directory→properTIes→virtual directory→applicaTIon settings→configuration→app options→session timeout选项来改变session的超时时间,也可以在ASP脚本中设定,如session.timeout=60,可设定超时时间为60分钟。

   怎样才能知道访问者的一些信息?
    解答:通过request.servervariables("http—user—agent")获得访问者浏览器的类型;request.servervariables("remote—addr")可获得访问者的ip地址;而访问者的语言环境可通过request.servervariables("http—accept—language")来获得。

   怎样才能将query string从一个ASP文件传送到另一个ASP文件?
    解答:前一个ASP文件加入下列代码:response.redirect("second.ASP?"&request.servervariables("query—string"))即可。

   ASP中如何控制cookies?
    解答: 若想写入cookies可用:response.cookies("待写入的coookies名称")=待写入数据。读取cookies则使用:读取数据=request.cookies("待读的cookies名称")。   注意,写入cookies的response.cookies程序段必须放在〈html〉标记之前,且不可以有任何的其它html代码。另外,cookies中必须使用expires设定有效期,cookies才能真正地写入客户端硬盘中,否则只是临时的。

   怎样实现用ASP发送邮件?
    解答: 用户需装上windows nt option pack的smtp service功能。实现代码如下:  〈%   set mail = server.createobject("cdonts.newmail")   mail.to ="abc@xxx.com"   mail.from ="yourmail@xxx.com"   mail.subject ="主题"   mail.body ="e-mail内容"   mail.send   %〉

   ASP与数据库连接一定要在服务器端设置dsn吗?
    解答: 不一定,ASP与服务器的数据库连接有两种方法,一种为通过dsn建立连接,另一种不用dsn建立连接。通过dsn连接数据库需要服务器的系统管理员在服务器的控制面板中的odbc中设置一个dsn。如果没有在服务器上设置dsn,只要知道数据库文件名(比如access、paradox、foxpro的数据库)或者数据源名(如sqlserver的数据库)就可以访问数据库,直接提供连接所需的参数即可。   连接代码如下:  set conn=server.createobject("adodb.connection")   connpath="dbq="&server.mappath("yourtable.mdb")   conn.open"driver={microsoft access driver (?.mdb)};"&connpath   set rs=conn.execute("select?from authors")


   如何从一页到另一页传递变量?
    解答:用hidden表单类型来传递变量。   〈form method="post"action="mynextpage.ASP"〉  〈% for each item in request.form %〉  〈input namee="〈%=item%〉"type="hidden"   value="〈%=server.htmlencode(request.form(item)) %〉"〉  〈% next %〉  〈/form〉   用session来保存变量。   〈%session("bh")= request.form ("bh")%〉   用querystring保存变量。   〈a herf="action.ASP?bh=10"〉查询〈/a〉  〈%request. querystring ("bh")%〉

   如何用ASP实现在线人数统计?
    解答:在线人数是指一个时段内的访客人数统计,时间的长短是由设计者设定的。   在这个时段内,各个不同ip访问本站点的总数,就是当前的线上人数。在ASP中,使用session对象来实现统计,实现代码如下:  golobal.asa文件   〈script language="vbscript"runat="server"〉  sub session—onstart   application("online")=application("online")+1   end sub   sub session—onend   application("online")=application("online")-1   end sub   sub application—onstard   application("online")=0   end sub   sub application—onend   application("online")=0   end sub   〈/script〉   online.ASP文件内容   〈% tmp=application("online")   tmp=cstr(tmp)   dim disp(20)   dim images(20)   dbbits=len(tmp)   for i= 1 to dbbits   disp(i)=left(right(tmp,i),i-(i-1))   next   for i=dbbits to 1 step -1   images(i)="〈img src="&"http://xxxx.com.cn/pic"&"/"&disp(i)&".gif〉"   response.write"document.write(′"&images(i)&"′);"   next %〉

   ASP程序运行的时间如何计算?
    解答:确定ASP程序的执行时间的代码如下所示:   〈%   dim t1,t2   t1=now()   ′被检测的ASP代码   t2=now()   response.write"运行这段ASP代码用了"&cstr(cdbl((t2-t1)*24*60*60))&"秒"   %〉

   Excute后都需要返回一个RecordSet对象吗?
    解答: 不是的,例如在表中删除记录。我们来看看下面的例子——在Employee表中删除了Job_ID为1的记录,并不需要再返回一个RecordSet: set conn= Server.CreateObject(“ADODB.Connection”) conn.ConnectionString=”driver={SQL Server};server=srv;”&_ “uid=sa;pwd=;database=pubs” conn.open conn.Excute “Delect From Employee Where Job_ID=1;”,,adCmdText

   Insert into与AddNew哪一个更好?在ASP中,直接使用“Insert into” 语句与使用ADO中AddNew方法有什么区别?哪一种更好呢?
    解答:AddNew方法的实质就是封装了“Insert into”语句。所以,当我们需要对大量数据进行操作的时候,应优先选用“Insert into”语句。因为直接使用SQL语句,减少了ADO的解释时间,显然会大大加快存取数据的速度。

   无法登陆SQL SERVER?
    解答:这是因为安装SQL SERVER时使用了NT验证模式,而ASP以匿名身份运行,不够资格访问数据库服务器。解决方法:把SQL SERVER改成混合验证模式(包含SQL验证)

   权限问题
    解答:ASP没有权限访问某些文件夹。因此运行VB编写的组件可能会出毛病。设置system32文件夹的属性,赋予IUSR用户运行权限即可。ASP也没有权限访问注册表。这个可以用组件来实现。把组件注册到COM+里,然后指定其以高级身份运行;或者取消虚拟目录的“匿名访问”,让访客输入管理员密码,这时候ASP就提升为管理员身份运行了。ADSI也是一样。如果Access数据库存放在受保护的文件夹,就会出现80004005错误。此时也需要设置文件夹的权限。

   在ASP文件中读取HTML的表单字段有几种方法?
    解答:Request对象除了可以用来读取附带在网址后面的参数以外,也可以读取HTML表单字段的内容,经常使用的语法结构如下:   < Form name =Formname method=“Get|Post”Action=“URL”>< Form > 其中的method可以接受Get或Post两种传输的方法,其中的Post是允许传输大量数据的方法,而Get方法会将所要传输的数据附在网址后面,然后一起送达服务器,因此传送的数据量就会受到限制,但是执行效率却比Post方法好。   使用Get或Post方法都可以将数据送至服务器,使用Request对象接收数据的相对应方法如下:   Get:Request.QueryString(“字段名称”),也可以写成Request (“字段名称”)  Post:Request.Form (“字段名称”),也可以写成Request (“字段名称”)

   在ASP页面中既可以使用VBScript,也可以使用Jscript,混合使用脚本引擎好吗?
    解答:虽然在ASP页面中既可以使用VBScript,也可以使用JScript。但是在同一个页面上同时使用JScript和VBScript则是不可取的。因为服务器必须实例化并尝试缓存两个(而不是一个)脚本引擎,这在一定程度上增加了系统负担。因此,从性能上考虑,不应在同一页面中混用多种脚本引擎。

   当我们建立了一个ASP文件,并且符合语法时,通过浏览器输入以下地址,或通过资源管理器打开浏览:c:\inetpub\wwwroot\a.asp,将出现无法运行的错误,并提示权限不对或文件无法访问,为何不能正常运行ASP文件?
    解答:这是因为ASP文件首先要求站点是具备“执行(脚本)”属性的;然后要求按照URL格式输入地址,而不是DOS格式,我们需要在电脑上安装好并启动Web服务平台,并确保ASP文件存放在Web服务器的虚拟目录下,就可以通过HTTP的格式来浏览,在浏览器的地址栏输入:“http:// Web站点名称(或站点的IP地址)/ASP文件名称”,回车后就可以在浏览器中看到服务器执行ASP文件的结果。

 什么是ASP.NET?它与ASP有什么关系?
    解答:Active Server Pages(ASP,活动服务器页面)就是一个比较简单编程环境,在其中,可以混合使用HTML、脚本语言以及少量组件来创建服务器端的Internet应用程序;   ASP.NET是微软力推的功能强大的编程环境,可以使用C#等多种高级语言及脚本语言、HTML、XML、XSL等来创建基于网络的应用程序。ASP.NET将C#作为一种面向对象语言,在很多方面来看,C#将成为微软的与Java相似的语言。 C#是ASP.NET开发中一个最重要的功能,微软会将C#发展成为Java的强劲对手。这也是微软.Net框架的一个重要组成部分。我认为C#是微软在编程语言领域击败对手的主要工具。   ASP.NET在面向对象性、数据库连接、大型站点应用等方面都优于ASP程序,ASP.NET还提供更多的其他方面的新特性,例如:内置的对象缓存和页面结果缓存;内置的XML支持,可用于XML数据集的简单处理;服务器控制提供了更充分的交互式制等。   ASP.NET依然完全锁定在微软的操作系统中,要真正发挥ASP.NET潜力,你要使用C#或vb.net。这两种语言将成为ASP.NET标准的核心的脚本语言。

   ASP是一种编程语言吗?
    解答:ASP不是编程语言,而是一种开发环境。ASP提供了一个在服务器端执行指令的环境,它利用了特殊的符号()来区分HTML与必须经过服务器翻译才能送往客户端的命令。它可以执行的指令包括HTML语言,Microsoft VBScript和Microsoft Jscript等,因此可以制作出功能强大的Web应用程序。

   在Web服务器上容纳多个Web站点,能使用PWS吗?
    解答:在PWS上只能容纳一个Web站点。为了在相同的计算机上容纳多个Web站点,需要使用Windows NT Server或Windows 2000 Server/Professional和IIS。

   如何使用6个内置ASP对象?
    解答:ASP提供了多个内嵌对象,无须建立就可以在指令中直接访问和使用它们,这六个对象主要有:请求(Request)对象、响应(Response)对象、工作阶段(Session)对象、应用程序(Application)对象、服务器(Server)对象、Cookies对象,这六个对象中的服务器(Server)对象可加载其他组件,这可以扩展ASP的功能。   使用Server.CreateObject所建立的对象,它的生命周期在它建立时开始,在它所在的网页程序结束时结束。如果想要让该对象跨网页使用,则可以用Session对象来记录Server.CreateObject所建立的对象。

   为什么在使用Response.Redirect的时候出现以下错误:“标题错误,已将HTTP标题写入用户端浏览器,对任何HTTP的标题所作的修改必须在写入页内容之前”?
    解答:Response.Redirect可以将网页转移至另外的网页上,使用的语法结构是这样的:Response.Redirect网址,其中网址可以是相对地址或绝对地址,但在IIS4.0使用与在IIS5.0使用有所不同。   在IIS4.0转移网页须在任何数据都未输出至客户端浏览器之前进行,否则会发生错误。这里所谓的数据包括HTML的卷标,例如:< HTML>,< BODY>等,而在IIS5.0中已有所改进,在IIS5.0的默认情况下缓冲区是开启的,这样的错误不再产生。   在Response对象中有一Buffer属性,该属性可以设置网站在处理ASP之后是否马上将数据传送到客户端,但设置该属性也必须在传送任何数据给客户端之前。   为保险起见,无论采用何种ASP运行平台,在页面的开始写上< % Response.Buffer=True %>,将缓冲区设置为开启,这样的错误就不会发生了。

   缓冲输出对于网页传输有没有影响?
    解答:在比较大的Web页中,第一部分在浏览器中出现可能会有一些延迟,但是加载整个Web页的速度比不用缓冲要快。

   在没有表单提交时查询字符串的值是否可以使用Request.QueryString集合?
    解答:Request对象用于读取浏览器的数据,它除了可以读取表单字段的内容,还可以用来读取附带在网址后面的参数,无论请求字符串怎样添加到链接地址中对Request来说都没有什么不同。使用get方法提交一个表单,还是跟随一个附加查询串的链接查询字符串中所有的值,都可以使用Request.QueryString集合。

   在ASP脚本中写了很多的注释,这会不会影响服务器处理ASP文件的速度?
    解答:在编写程序的过程中,作注释是良好的习惯。经国外技术人员测试,带有过多注释的ASP文件整体性能仅仅会下降0.1%,也就是说在实际应用中基本上不会感觉到服务器的性能下降的。

   需不需要在每个ASP文件的开头使用< % @LANGUAGE=VBScript % >?
    解答:在每个ASP文件的开头使用< % @LANGUAGE=VBScript %>代码是用来通知服务器现在使用VBScript来编写程序,但因为ASP的预设程序语言是VBScript,因此忽略这样代码也可以正常运行,但如果程序的脚本语言是JavaScrip,就需要在程序第一行指明所用的脚本语言。

   有没有必要在每一个ASP文件中使用“Option Explicit”?
    解答:在实际应用中,VBScript变量的概念已经模糊了,允许直接使用变量,而不用Dim声明变量,但这并不是一个好习惯,容易造成程序错误,因为可能重复定义一个变量。我们可以在程序中使用Option Explicit语句,这样在使用一个变量的时候,必须先声明它,如果使用了没有经过声明的变量,运行时,程序就会出错。   实践证明,ASP文件中使用“Option Explicit”可以使得程序出错机会降到最少,并且会大大提升整体性能。

  运行ASP文件时有什么安全措施?
    解答:ASP提供了很好的代码保护机制,所有的ASP代码都在服务器端执行而只返回给客户端代码执行结果。但仍不排除恶意人士对Web服务器的刻意破坏,所以在编写ASP文件时更要注意安全问题。   虽然在ASP中引入文件以inc作为扩展名,在这里仍建议以ASP作为引文件的扩展名。当这些代码在安全机制不好的Web Server上运行时,只需在地址栏上输入引入文件的地址(inc为扩展名),就可以浏览该引入文件的内容,这是由于在Web Server上,如果没有定义好解析某类型(比如inc)的动态连接库时,该文件以源码方式显示。   另外,不要把数据库文件放在网站结构内部,这样,当恶意人士获取数据库路径后,就可以轻易获取该数据库,进而肆意更改数据库内容。比较好的做法是,为数据库建立数据源名称DSN(Date Source Name),在DSN中存储了有关连接到指定数据提供者的信息,包括:“数据库的物理位置,用于访问数据库的驱动程序的类型,访问数据库的驱动程序所需要的任何其他参数”,在进行数据库访问时可以直接访问该DSN。

   ADO是什么,它是如何操作数据库的?
    解答:ADO的全名是ActiveX Data Object(ActiveX数据对象),是一组优化的访问数据库的专用对象集,它为ASP提供了完整的站点数据库解决方案,它作用在服务器端,提供含有数据库信息的主页内容,通过执行SQL命令,让用户在浏览器画面中输入,更新和删除站点数据库的信息。   ADO主要包括Connection,Recordset和Command三个对象, 它们的主要功能如下:   •Connection对象:负责打开或连接数据库文件;   •Recordset对象:存取数据库的内容;   •Command对象:对数据库下达行动查询指令,以及执行SQL Server的存储过程。

   使用Recordset对象和Command对象来访问数据库的区别在哪里?
    解答:Recordset对象会要求数据库传送所有的数据,那么数据量很大的时候就会造成网络的阻塞和数据库服务器的负荷过重,因此整体的执行效率会降低。 利用Command对象直接调用SQL语句,所执行的操作是在数据库服务器中进行的,显然会有很高的执行效率。特别是在服务器端执行创建完成的存储过程,可以降低网络流量,另外,由于事先进行了语法分析,可以提高整体的执行效率。

   是否必须为每一个Recordset对象创建一个Connection对象?
    解答:可以同时对不同的Recordset对象使用相同的Connection对象,以节省资源。

   在ASP中使用ADO的AddNew方法和直接使用“Insert into...”语句有何不同?哪种方式更好?
    解答:ADO的AddNew方法只是将“Insert into ”语句封装了起来,所以,当对大量数据进行操作的时候,直接使用SQL语句将会大大加快存取数据的速度,因为它减少了ADO的“翻译”时间,由于SQL语句所执行的操作是直接在数据库服务器中进行的,尤其在数据量很大的时候有显著的优势。

   为什么我在ASP中使用标准的插入记录语句 insert into books(name,email) values(“kitty”, “kitty@263.com”)会出错?
    解答:SQL(Structured Query Language/结构式查询语言)是IBM公司在1970年代所发展出来的数据查询语言,它现在已经成为关系型数据库查询语言的标准。SQL语句是一种以英文为基础的程序语言,可以使用它来添加,管理以及存取数据库。   在SQL语句中添加时的字符串虽然可以使用双引号,但在ASP中却需要使用单引号才能正常执行。所以应当写成insert into books(name,email) values(‘kitty’,‘kitty@263.com’)。

   什么是ActiveX 控件? 在哪里可以得到这些ActiveX控件?
    解答:Microsoft ActiveX控件是由软件提供商开发的可重用的软件组件。除了ASP的内嵌对象外,另外安装进来的ActiveX控件也可以在ASP中使用,这样可以节省许多宝贵的开发时间,在ASP中其实也内嵌了很多的ActiveX控件可以使用。   使用ActiveX控件,可以很快地Web应用程序、以及开发工具中加入特殊的功能。例如,使用AdRotator对象来制作广告滚动板,使用FileSystemObject对象进行文件存取,使用Marquee对象实现滚动文字。   现在,已有1000多个商用的ActiveX控件,开发ActiveX控件可以使用各种编程语言,如C,C++等,以及微软公司的 Visual Java开发环境Microsoft Visual J++。 ActiveX控件一旦被开发出来,设计和开发人员就可以把它当作预装配组件,用于开发客户程序。以此种方式使用 ActiveX控件,使用者无需知道这些组件是如何开发的,在很多情况下,甚至不需要自己编程,就可以完成网页或应用程序的设计。   目前由第三方软件开发商提供的商用控件有1000多种。微软ActiveX组件库(ActiveX Component Gallery)中存着有关信息以及相关的连接,它们指向微软及第三方开发商提供的各种 ActiveX 控件。在微软ActiveX组件库(ActiveX Component Gallery)中,可以找到开发Internet增强型ActiveX 控件的公司列表。

非常好我支持^.^

(0) 0%

不好我反对

(0) 0%

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!