ActiveServerPage(ASP)常见问题

2015 年 6 月 5 日5170

  问: 如何将认证使用者储存到Session变数(New)

  问: ServerVariables("LOGON_USER")传回空值(New)

  问: ServerVariables("Remote_Host")传回IP而不是HostName(New)

  问: CDO版本摘要介绍

  问: 何谓ADSI?

  问: 何谓ADsPath?

  问: 如何得到LDAP Root DS Entry?

  问: 如何侦测浏览器的属性?

  问: 如何善用Response.Buffer增进浏览速度?

  问: 如何利用Meta Tag来增加文件属性?

  问: Server.Transfer和Response.Redirect相异之处?

  问: Server.Execute和#include相异之处?

  问: 要如何使用ASPError物件?

  问: 要如何让以asp程式让Internet Explorer 浏览器不cache?

  问: 如何依据浏览器语言版本设定ASP locale ID ?

  问: 如何使用ASP/ADO query ODBC DATASOURCE?

  问: 要如何使用 Active Server Pages 程式预防浏览器开启档案时只显示为Frameset的一部份?

  问: 如何使用ASP 制作模拟动态生长的表单(form) ?

  问: 如何使用ASP利用ADO呼叫SQL的stored procedure?

  问: 我的程式中是否能放入Option Explicit?

  Option Explicit

  Response.Expires = 0

  问: 如何在ASP程式中设定session timeout的长短?

  问: 如果使用者不接受cookie会发生何种状况?

  问: 要如何设定ASP的cache?

  问: 当使用了Proxy Server的情况下,Webpage回传一个"Object Moved"的错误,要如何修改

  asp程式解决这个问题?

  问: 什么时候增加ASP script engine cache,可以帮助运行的效率?

  问: 使用 On filesystemobject的 .filecopy 方法,得到以下错误讯息,应该如何处理?

  Microsoft VBScript runtime error '800a0046'

  Permission denied

  问: 如何设计一个page可以对每个登入的使用者提示欢迎的祝贺语如下?

  Welcome

  问: 是否有可能去读取以及解析在其他site的档案而无须附加其他的元件?

  问: 当Access自己web site 下的virtual Directory ,会发生以下的错误讯息,该如何处理?

  HTTP/1.1 500 Server Error -2146646015 (0x800cc801)

  问: 为何IIS的Online文件的Index tab没有包含所有的章节?

  问: 为何无法在PWS 或是NT Workstation 版的IIS上做搜寻文件?

  问: 为何当disable 自动密码同步后,匿名使用者无法进入web site?

  问: ASP 1.0有哪几个版本?

  问: 发生以下的错误是什么原因?

  Microsoft VBScript compilation error '800a0414'

  Cannot use parens when calling a Sub

  /test/test.asp, line 17

  myobj.movefile(fname, sfolder, tfolder)

  ---------------------------------------^

  问: 要如何强迫 session 关闭?

  问: 发生以下的错误是什么原因,要如何解决?

  error 'ASP 0115' Unexpected error

  /disney/main.asp

  A trappable error occurred in an external object. The script cannot continue running.

  问: 为何会发生"HTTP Headers already written" 的错误?

  问: 使用以Microsoft Visual C++ 写的 server-side 元件如何除错?

  问: 当更新了在 http://www.zjjv.com///AppDir/mainfrm.htm") Then

  Response.Redirect "http://http://www.zjjv.com///AppDir/mainfrm.htm"

  End If

  %>

  以下是这个例子的程式码

  file: Mainfrm.htm

  -----------------

  

  

  

  

  

  

  file: Frame1.asp

  ----------------

  <%

  If (Request.ServerVariables("HTTP_REFERER") = "") Or

  (Left(Request.ServerVariables("HTTP_REFERER"),42) <>

  "http://http://www.zjjv.com///AppDir/mainfrm.htm") Then

  Response.Redirect "http://http://www.zjjv.com///AppDir/mainfrm.htm"

  End If

  %>

  

  

  

  In Frame 1.

  

  

  file: Frame2.asp

  ----------------

  

  

  

  In Frame 2.

  

  

  问: 如何使用ASP 制作模拟动态生长的表单(form) ?

  答: file: DYNAFORM.ASP

  <%@ language = vbscript%>

  <% Response.Expires = 0 %>

  

  

  

  

  

  <%

  If Request("Action") = "Submit the List" Then

  ' Show what was entered.

  Response.Write "Here are the Items submitted:
"

  nItems = Request.Form("Items").Count

  For i = 1 To nItems

  ' Show submitted Items

  Response.Write Request.Form("Items")(i) & "
"

  Next

  Response.Write Request("Item") & "
"

  Else

  ' Create the form from all items. %>

  

  

  

  问: 如何使用ASP利用ADO呼叫SQL的stored procedure?

  答: 以下有三种方式可做,以下例子是使用command物件呼叫sample stored procedure sp_test,然后这个stored procedure 会接受一个整数值为参数并会回传一个整数值。

  <%@ LANGUAGE="VBSCRIPT" %>

  

  

  

  

  方法一是查询data source 的stored procedure的参数,这是较没效率的方式为

  <%

  Set cn = Server.CreateObject("ADODB.Connection")

  Set cmd = Server.CreateObject("ADODB.Command")

  cn.Open "data source name", "userid", "password"

  Set cmd.ActiveConnection = cn

  cmd.CommandText = "sp_test"

  cmd.CommandType = adCmdStoredProc

  ' Ask the server about the parameters for the stored proc

  cmd.Parameters.Refresh

  ' Assign a value to the 2nd parameter.

  ' Index of 0 represents first parameter.

  cmd.Parameters(1) = 11

  cmd.Execute

  %>

  呼叫经由方法一

  ReturnValue = <% Response.Write cmd.Parameters(0) %>

  

  方法二是以宣告stored procedure, 接着直接宣告这个参数

  <%

  Set cn = Server.CreateObject("ADODB.Connection")

  cn.Open "data source name", "userid", "password"

  Set cmd = Server.CreateObject("ADODB.Command")

  Set cmd.ActiveConnection = cn

  cmd.CommandText = "sp_test"

  cmd.CommandType = adCmdStoredProc

  cmd.Parameters.Append cmd.CreateParameter("RetVal", adInteger, _

  adParamReturnValue)

  cmd.Parameters.Append cmd.CreateParameter("Param1", adInteger, _

  adParamInput)

  ' Set value of Param1 of the default collection to 22

  cmd("Param1") = 22

  cmd.Execute

  %>

  呼叫经由方法二

  ReturnValue = <% Response.Write cmd(0) %>

  

  方法三是最常用的方式,使用标准方式 <%

  Set cn = Server.CreateObject("ADODB.Connection")

  cn.Open "data source name", "userid", "password"

  Set cmd = Server.CreateObject("ADODB.Command")

  Set cmd.ActiveConnection = cn

  ' Define the stored procedure's inputs and outputs

  ' Question marks act as placeholders for each parameter for the

  ' stored procedure

  cmd.CommandText = "{?=call sp_test(?)}"

  ' specify parameter info 1 by 1 in the order of the question marks

  ' specified when we defined the stored procedure

  cmd.Parameters.Append cmd.CreateParameter("RetVal", adInteger, _

  adParamReturnValue)

  cmd.Parameters.Append cmd.CreateParameter("Param1", adInteger, _

  adParamInput)

  cmd.Parameters("Param1") = 33

  cmd.Execute

  %>

  呼叫经由方法三

  ReturnValue = <% Response.Write cmd("RetVal") %>

  

  

  问: 我的程式中是否能放入Option Explicit?

  Option Explicit

  Response.Expires = 0

  答: 不可以,Option Explicit是必须以Visual Basic呼叫。

  问: 如何在ASP程式中设定session timeout的长短?

  答: 举例 Session.timeout=10 (单位为分钟),此功能仅用在ASP 2.0以上版本。

  问: 如果使用者不接受cookie会发生何种状况?

  答: 这时候,每一个 non cookie hit 都会产生一个新的session,而这个产生的session将是毫无意义的。

  问: 要如何设定ASP的cache?

  答: 1.进入IIS服务管理员 (MMC)

  2.展开Internet Information Server,选择伺服器

  3.按滑鼠右键,选property(内容)

  4.在Internet Information Server tab 的主要内容选"http://www.zjjv.com/.URLConnection class取得URL的内容,接着再利用其他程式码做解析的工作。

  问: 当access自己web site 下的virtual directory ,会发生以下的错误讯息,该如何处理?

  HTTP/1.1 500 Server Error -2146646015 (0x800cc801)

  答: 这个错误是产生于 IIS Metabase (放置所有 config data 的地方) 这表示可能部份的data 已经找不到了,举例而言,若是要求access某个Vdir的路径,而实际上并不存在,这个错误就会发生。

  问: 为何IIS的Online文件的Index tab没有包含所有的章节?

  答: 由于有部份的Online文件是从其他元件取得而不属于IIS,(如SMTP,NNTP),所以并不会被列在主Index。

  问: 为何无法在PWS 或是NT Workstation 版的IIS上做搜寻文件?

  答: 由于Online文件的搜寻元件的控制是来自于Index Server,而Index Server只工作在NT Server上,因此在Windows 95/98的 PWS或是 NT Workstation的IIS的Online文件上都不会有Index tab

  问: 为何当disable 自动密码同步后,匿名使用者无法进入web site?

  答: 当建立使用者帐户没有密码,而这个帐户为www以及ftp的匿名使用者帐户,接着enable自动密码同步,此时对NT而言,个密码是有效的。此时我们将着个匿名使用者密码从metabase 中清除,然后disable 自动密码同步,IIS将不会将这个密码再自动放回metabase中。

  问: ASP 1.0有哪几个版本?

  答: ASP 1.0 是版本1.12.06.0 日期为 12/6/96

  ASP 1.0a 是版本 1.13.31

  ASP 1.0b 是版本 1.15.14 日期为 3/14/97

  ASP 1.0b 另一个hotfix 版本的 asp.dll 是1.17.07

  问: 发生以下的错误是什么原因?

  Microsoft VBScript compilation error '800a0414'

  Cannot use parens when calling a Sub

  /test/test.asp, line 17

  myobj.movefile(fname, sfolder, tfolder)

  ---------------------------------------^

  答: 这行命令式包含了关键字Call ,如下

  Call myobj.movefile(fname, sfolder, tfolder)

  问: 要如何强迫 session 关闭?

  答: 使用 Abandon ,如下

  Session.Abandon

  问: 发生以下的错误事什么原因,要如何解决?

  error 'ASP 0115' Unexpected error

  /disney/main.asp

  A trappable error occurred in an external object. The script cannot continue running.

  答: IUSR权限不够所造成的。

  给予 IUSR 对WINNT 目录"修改"的权限才能产生 JET ODBC 暂存档。

  给予 IUSR 对储存MS Access 档案目录的"读取"权限。

  问: 为何会发生"HTTP Headers already written" 的错误?

  答: 请在程式码的最上头加上

  response.buffer = true

  接着加上

  response.clear

  reponse.redirect "terima.asp"

  问: 使用以Microsoft Visual C++ 写的 server-side 元件如何除错?

  答: 以 OutputDebugString() 列出文字讯息到除错程式的输出视窗。

  问: 当更新了在 wwwroot 目录下的档案,可是一定要重新启动web server才能看到这些档案被更新,是否由caching 所造成的问题?

  答: 可能是由长档名所造成的,如果储存长档名档案由16 bit 编辑器如 Windows 3.1 的 Notepad, 或 Edit, 所以若档名 Information.asp 将缩为 Inform~1.asp. 这就是 Active Server Pages (ASP) 无法重新载入档案的原因。

  问: Internet Information Server (IIS) 如何得知要将.asp 档案传递到 Microsoft Active Server Pages (ASP)?

  答: 藉由registry key 对应到正确的Active Server Pages DLL:

  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Script Map

  问: 为何会发生奇怪的错误当使用CreateObject 存取元件?

  答: 当存取server-side元件时,应该使用Server.CreateObject取代CreateObject 。

  问: 要如何设定Microsoft Internet Information Server (IIS) 让预设网页为default.asp 档案?

  答: 需要给予这个目录的执行权限,否则必须在META tag 做设定,将浏览器指向包含这个 default.asp档的目录。

  问: 当将一个.asp档案放到web server上,当由浏览器读取这个.asp档案时却可以看到整个.asp程式码,有什么不对呢?

  答: 以下几个可能的因素

  1. 档案忘了给.asp延伸档名。

  2. 在IIS设定中,没有给予这个放置.asp档案的目录执行的权限。

  3. 用file:C:\wwwroot\myfile.asp 存取.asp档案,请改用

  http://myserv/myfile.asp

  问: 哪些作业系统支援执行ASP?

  答: :NT 4.0 Server,MT 4.0 workstation with Peer Web Services,Windows 95 with Personal Web Server,NT 3.51不支援,NT 4.0 MIPS也不支援。

  问: 是否能够从一支asp程式呼叫在另一支asp程式的副程式或函数?

  答: 由于每一支asp程式是个别被编译而且只存在于当这支asp程式被要求执行,所以必须以include的方式将另一支asp程式加入,当然这时候的这支asp程式就会先将包含有要呼叫的副程式的asp程式include进来,接着编译并且执行。

  问: 是否能够从一支asp程式存取在另一支asp程式的变数?

  答: 由于每一支asp程式是个别被编译而且只存在于当这支asp程式被要求执行,所以变数只存在于各自的asp。

  问: VBScript 是否在Response.Redirect执行后执行?

  答: 不可以,VBScript 在Response.Redirect之后不执行。

  问: VBScript 是否在Response.End执行后执行?

  答: 不可以,VBScript 在Response.End之后不执行,HTML跟着Response.End并法将结果输出到client端,Response.End只是代表叙述这是 End。

  问:

  Response object error 'ASP 0156' Header Error

  /intranet_devel/scripts/CheckLog.asp, line 14

  The HTTP headers are already written to the client

  browser. Any HTTP header modifications must be made before writing page content.

  什么原因会产生上述错误讯息?

  答: 这个错误肇因于在更改Response的Header输出 HTML 之前,因此变更Response 的 Header必须是一致的,例如Response.Expires=0,此乃HTTP 协定的限制。

  问: Session变数是否能使用在web farm?

  答: 不可以,session 变数无法使用在多伺服器的web farm,Session变数是以个别服器为基础,而且若是下一个HTTP的要求是要将之传到另一个伺服器则会被当成没有session 变数。

  问: 'ASP 0113'The max amount of time for a script to execute was

  exceed, you can change this limit by specifying a

  new value for the property server. Script Time out

  or by changing the value for Script Time out.

  什么原因会产生上述错误讯息?

  答: 这个错误可能是发生在有一个无限回路在asp程式码中,可能是recordset.MoveNext 或是其他的。

  问:

  Microsoft OLE DB Provider for ODBC Drivers error '80004005'

  [Microsoft][ODBC SQL Server Driver][dbnmpntw]ConnectionOpen (CreateFile()).

  什么原因会产生上述错误讯息?

  答: 这个错误可能是发生在使用NamePipe连接SQLServer,通常是IUSER_MACHINE帐号并不为远端的SQL Server所承认。

  问:

  Server object error 'ASP 0177:80040112'

  Server.CreateObject Failed [Filename], line [line number]

  The call to Server.CreateObject failed. The requested object instance cannot be created.

  什么原因会产生上述错误讯息?

  答: 这个错误可能是

  1. 没有ADODB license key 登录在registry

  2. IUSER_MACHINE帐号没有权限阅读这个registry key

  问:

  Microsoft VBScript runtime error '800a000d'

  Type mismatch

  什么原因会产生上述错误讯息?

  答: 最有可能的的原因是VBS形态不相容,这通常发生在传参数到物件方法。

  问:

  Error ASP 0115 unexpected error.

  Trappable error occured in an external object, the script cannot continue running.

  什么原因会产生上述错误讯息?

  答: 这是ASP已经抓到一个错误在物件中,这经常常发生,ADO经常丢出这样的错误讯息是当IUSER_MACHINE无法抓到所有需要的ODBC DLL。在所有的ASP0115的错误讯息中,这最常发生。

  问:

  Server object error 'ASP 177:800401f3'Server.CreateObject Failed

  /aspsamp/tutorial/lessons/Finance.asp, line 52

  The call to Server.CreateObject failed. The requested object instance cannot be created.

  什么原因会产生上述错误讯息?

  答: 这应该是PROGID 形态错误所造成的。

  问:

  Server object error 'ASP 0177:80040154 'Server.createobject failed

  /advworks/equipment/equip.asp, line 2

  The call to server.createobject failed The requeted object instance can not be created.

  什么原因会产生上述错误讯息?

  答: 这应该是由于没有这个class在registry中,但也经常发生在IUSER_MACHINE没有适当的权限去登入伺服器。

  问: 由于cookie的生命周期仅发生在目前的IE session,如果结束IE并且重新启动IE ,这时 cookie就消逝了,应如何控制cookie的使用期限?

  答: 同时设定cookie以及期限,

  Response.Cookies("mycookie") = "Y"

  Response.Cookies("mycookie").Expires = "December 31, 1999"

  问: 如何由client端得知萤幕解析度?

  答: 使用server变数,

  response.write(request.servervariables("http_ua_pixels"))

  这将可以得知使用者的萤幕解析度,不过这适用于使用Netscape浏览器。

0 0