ActiveServerPage(ASP)常见问题
问: 如何将认证使用者储存到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浏览器。