您所在的位置:首页 >>帮助中心 >>网站建设常见问题

ActiveServerPage(ASP)常见问题


文章来源:网络转载 发布者:网络转载发布时间:2014/12/7 23:17:34【打印此页】 【关闭

 问: 如何将认证使用者储存到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 元件如何除错?

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

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

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

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

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

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

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

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

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

  问: VBScript 是否在Response.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.

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

  问: 什么原因会产生错误讯息如下?

  '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.

  问: 什么原因会产生错误讯息如下?

  Microsoft OLE DB Provider for ODBC Drivers error '80004005'

  [Microsoft][ODBC sql server Driver][dbnmpntw]ConnectionOpen (CreateFile()).

  问: 什么原因会产生错误讯息如下?

  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.

  问: 什么原因会产生错误讯息如下?

  Microsoft VBScript runtime error '800a000d'

  Type mismatch

  问: 什么原因会产生错误讯息如下?

  Error ASP 0115 unexpected error.

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

  问: 什么原因会产生错误讯息如下?

  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.

  问: 什么原因会产生错误讯息如下?

  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.

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

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

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

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

  答: <%< p="">

  If Session("LOGON_USER") = "" Then

  If Request.ServerVariables("LOGON_USER") = "" Then

  Response.Status = "401 Access Denied"

  Response.End

  Else

  Session("LOGON_USER") = Request.ServerVariables("LOGON_USER")

  ' the following lines strip out an NT domain from the user name

  If InStr(Session("LOGON_USER"),"\") then

  Session("LOGON_USER") = Right(Session("LOGON_USER"), Len(Session("LOGON_USER")) - InStr(Session("LOGON_USER"),"\"))

  End If

  End If

  End If

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

  答: 如果ASP page使用"允许匿名存取",则"LOGON_USER"variable将会传回空值。如果要正确显示请将认证模式设为基本验证或整合Windows验证即可。

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

  答: 在预设情况下,ServerVariables("Remote_Host")传回IP,这是设计上的考量,为了要增进IIS的效能,但您仍可藉由修改Metabase,叫IIS去跟DNS做查询,详细请见KB Q245574。

  问: CDO版本摘要介绍

  答: Library 来源 档名 ProgID

  CDO 1.0 Exchange 4.0 Mdlsp.dll

  Mdlsp32.dll MAPI

  CDO 1.1 Exchange 5.0 OleMsg.dll

  OleMsg32.dll MAPI

  CDO 1.2 Exchange 5.5

  Outlook 98

  Outlook 2000

  Exchange 2000 Cdo.dll  MAPI

  CDO for NTS 1.2 Exchange 5.5

  IIS 4.0

  MCIS

  Windows 2000 CdoNTS.dll  CDONTS

  CDO for Windows 2000 (CDO 2.0) Windows 2000 CDosys.dll CDO

  CDO for Exchange 2000 (CDO 3.0) Exchange 2000 Cdoex.dll CDO

  CDO for Exchange Management 1.0 Exchange 2000 Cdoexm.dll CDOEXM

  CDO WorkFlow Objects for Microsoft Exchange 1.0 Exchange 2000 Cdowf.dll CDOWF

  问: 何谓ADSI?

  答: ADSI是一组存取不同目录服务的介面,这里将会专注在存取Windows 2000 Active Directory directory service. ADSI使用LDAP协定来跟Active Directory沟通。

  问: 何谓ADsPath?

  答: 当使用程式存取Active Directory时,你必须提供LDAP namespace(progID)和物件的路径(ADsPath),以下是一些ADsPath的范例:

  ADSI object ADsPath

  Organizational unit in the nwtraders domain LDAP://OU=Sales, DC=nwtraders, DC=msft

  Exchange object on Exchange Server LDAP://exch01/O=Microsoft

  jsmith user in the Sales OU of the nwtraders domain LDAP://CN=jsmith, OU=Sales, DC=nwtraders, DC=msft

  comp1 in the Redmond domain WinNT://REDMOND/comp1, computer

  alice, a local user on the comp1 computer WinNT://REDMOND/comp1/alice

  问: 如何得到LDAP Root DS Entry?

  答: RFC 2251 中规范所有的LDAP directory都必须拥有一个特别内容rootDSE object,其中一个标准的属性叫做defaultNamingContext,在Windows 2000 中,他会回传Active Directory根目录的名称,请见以下范例:

  Set Root = GetObject("LDAP://RootDSE")

  DomainPath = Root.Get("DefaultNamingContext")

  Set Domain = GetObject("LDAP://"& DomainPath)

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

  答: 利用MSWC.BrowserType可以侦测到浏览器许多属性,如浏览器名称、版本,是否支援cookies、frames、tables、BackGroundSounds、VBScript、JavaScript等。例如: Set bc = Server.CreateObject("MSWC.BrowserType")

  if okies=True then...

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

  答: 利用Response.Buffer=True,Response.Flush可以增进使用者浏览速度,如果一个页面 Response.Buffer=False,有30个资料传输,若有100个人浏览此页面,则有 3000个来回传输,严重影响效率;若在起始处设定 Response.Buffer=True,再将整个页面分为几个群组,在设当的地方搭配 Response.Flush,则可大幅改善使用者经验。

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

  答: 在Meta Tag 中记录着各种要提供给浏览器的隐藏资讯或指示,如

  

  如此可让搜寻引擎或Web Crawler自动进行读取。

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

  答: 虽然Server.Transfer和Response.Redirect都会转向,但两者之间仍有些不同:

  Response.Redirect是先由伺服器端将资料送到用户端,用户端再依照Redirect内容,向伺服器端要求转向到另一个网页,如此会增加一次用户端与伺服器端来回通讯时间,而Server.Transfer则是在伺服器端直接转向到另一个网页。并且由于Server.Transfer转向前后的网页,仍属同一应用程式,因此会将Session和Application的变数值带到转向后的URL位置,而Response.Redirect不会。

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

  答: Execute Method 是呼叫一个.asp 档案并执行它,比较类似一般程式语言的procedure call;而#include则仅将所包含的程式插入原程式当中。

  问: 要如何使用ASPError物件?

  答: 首先由Set objASPError=Server.GetLastError取得错误资讯,接着由ASPError物件的属性取得相关讯息:

  objASPError.ASPCode:传回IIS产生的错误码

  objASPError.Number:传回COM标准错误码,如 0x800A03FC

  objASPError.Source:传回实际产生错误的原始码

  objASPError.Category:指出错误的来源为ASP、Script或是Object

  objASPError.File:传回错误程式档案名称

  objASPError.Line:传回错误程式码的行数

  objASPError.Column:传回错误程式码的列数

  objASPError.Description:传回错误原因简介

  objASPError.ASPDescription:传回详细错误原因

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

  答: 除了由IIS可设定让Internet Explorer不cache以外,可以用以下的asp script,基本上是使用HTTP header控制cache。

  以下script必须执行在HTTP 1.1 server ,适用于Internet Explorer 4.0以上版本。

  <% response.cachecontrol="no-cache">

  <% response.addheader="">

  <% response.expires="-1">

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

  答: 使用以下的副程式就是依据使用者的浏览器语言,动态设定ASP应用程式 Locale ID

  (Session.LCID) 。

  Sample ASP Page

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

  以下的asp程式展示Locale 的变换,请在浏览器中的Internet 选项,改变语言设定。再refresh 这个 ASP page。

  NOTE: The SetLCID() 副程式请include在档案setlcid.inc.

  <%@ Language=VBScript %>

  

  <%

  SetLCID 'Set the Locale ID per the browser

  Response.Write "Date/Time Formats"

  Response.Write "

Date = " & Date()

  Response.Write "
Month = " & Month(Date())

  Response.Write "
Day = " & Day(Date())

  Response.Write "
Year = " & Year(Date())

  Response.Write "
Time = " & Time()

  Response.Write "

Currency Formats"

  Response.Write "

" & FormatCurrency(1.05, 2)

  Response.Write "
" & FormatNumber(1000000,2)

  Response.Write "
" & FormatNumber(-1000000,2)

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

  答: 以下的example仅做测试目的,测试 ADO 连接到任何 ODBC Datasource。

  <%

  if Request("REQUESTTYPE") <> "POST" then

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  ' % 如果request 不包含 REQUESTTYPE = "POST

  ' % 则显示 Form Page

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  dsn = Session("dsn")

  dbuser = Session("dbuser")

  dbpass = Session("dbpass")

  dbtable = Session("dbtable")

  dbfield = Session("dbfield")

  dbwhere = Session("dbwhere") 

 

You are authenticated as: <% =

 

  Request.ServerVariables("LOGON_USER")%>

Your IP Address is: <% =

 

  Request.ServerVariables("REMOTE_ADDR")%>

System DSN:" name=datasource>
Username:" name=username>
Password:

  %>" name=password>

Table:" name=table>
WHERE
Field to Query:" name=field>
Value to Query:" name=where>

   <%

  else

  '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  '% 执行 Query to Database

  '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  ' % Request datsource 从之前的Form

  ' % 设定 Session 变数因此可以读取这个值作为下次查询使用

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  dsn = Request("datasource")

  Session("dsn") = dsn

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  ' % Request username 从之前的Form

  ' % 设定 Session 变数因此可以读取这个值作为下次查询使用

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  dbuser = Request("username")

  Session("dbuser") = dbuser

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  ' % Request password 从之前的Form

  ' % 设定 Session 变数因此可以读取这个值作为下次查询使用

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  dbpass = Request("password")

  Session("dbpass") = dbpass

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  ' % Request table 从之前的Form

  ' % 设定 Session 变数因此可以读取这个值作为下次查询使用

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  dbtable = Request("table")

  Session("dbtable") = dbtable

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  ' % Request field 从之前的Form

  ' % 设定 Session 变数因此可以读取这个值作为下次查询使用

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  dbfield = Request("field")

  Session("dbfield") = dbfield

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  ' % Request table 从之前的Form

  ' % 设定 Session 变数因此可以读取这个值作为下次查询使用

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  dbwhere = Request("where")

  Session("dbwhere") = dbwhere

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  ' % 检查是否有任何要求的变数是blank, 如果有会通知使用者何者

  ' % 是blank ,反之继续query

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  if dsn = "" OR dbuser = "" OR dbtable = "" then

  Response.write "Error in SQL Statement:
"

  if dsn = "" then

  Response.write "Missing System DSN

"

  end if

  if dbuser = "" then

  Response.write "Missing Username

"

  end if

  if dbtable = "" then

  Response.write "Missing Tablename

"

  end if

  Response.write "

  VALUE=ReQuery>"

  else

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  ' % 产生 Conn Object ,开启时

  ' % 带进参数 System DSN, UserID, Password

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

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

  Set rs = Server.CreateObject("ADODB.RecordSet")

  Conn.Open dsn, dbuser, dbpass

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  ' % 建立 SQL 叙述并指定到变数 sql.

  ' $ 连接 dbtable 以及SELECT 叙述

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  if dbfield = "" OR dbwhere ="" then

  sql="SELECT * FROM " & dbtable

  else

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  ' % 如果 dbfield 和 dbwhere 被定,接着

  ' % 改变SQL 叙述使用 WHERE 子句

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  '

  sql="SELECT * FROM " & dbtable

  sql = sql & " WHERE " & dbfield

  sql = sql & " LIKE '%" & dbwhere & "%'"

  end if

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  ' %除错用, 回传 SQL 叙述

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  Response.Write "SQL STATEMENT: " &

  sql & ""

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  ' % 开启 RecordSet (RS) 并传到

  ' % connection (conn) 和 SQL 叙述 (sql)

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  RS.Open sql, Conn

  

  

  <%

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  ' % 回圈从 Fields Names ,印出 Field Names

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  For i = 0 to RS.Fields.Count - 1

  %>

 

  <% Next %>

  <%

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  ' % 回圈从 rows, 显示每一个field

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  Do While Not RS.EOF

  %>

  <% For i = 0 to RS.Fields.Count - 1 %>

 

  <% Next %>

 

  <%

  RS.MoveNext

  Loop

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  ' % 确认关闭 Result Set 以及 Connection object

  ' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  RS.Close

  Conn.Close

<% = RS(i).Name %>
<% = RS(i) %>

 

  <%

  end if

  end if

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

  答: 当Web 文件变成frameset的一部份的情形发生,通常是由于不是设计成个别显示,要预防这个情形,可使用ASP 的"Response.Redirect" 和 "Request.ServerVariables" 方重新指向到frameset page。

  假设使用以下文件架构:

  Frameset Page ()

  Frame 1 (frame1.asp)

  Frame 2 (frame2.asp)

  将以下的程式码放在frame1.asp 或是 frame2.asp 在开头的 tag 之前

  <%

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

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

  "") Then

  Response.Redirect ""

  End If

  以下是这个例子的程式码

  file:

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

  

  

  

  

  file: Frame1.asp

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

  <%

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

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

  "") Then

  Response.Redirect ""

  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. %>

  Items:

  <%

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

  For i = 1 To nItems

  ' Show previously submitted Items

  Response.Write "

  Trim(Request.Form("Items")(i)) & """>
"

  Next

  If Request.Form("Item") <> "" Then

  ' paint a new input box, and store the old Item in Items collection

  Response.Write "

  Trim(Request.Form("Item")) & """>
"

  Response.Write "

Please enter an Item,
"

  Response.Write "and submit them one at a time
"

  Response.Write "by pressing the Add Item button.
"

  Response.Write ""

  Else

  ' No Item was submitted, don't show an error

  Response.Write "

Please enter an Item,
"

  Response.Write "and submit them one at a time
"

  Response.Write "by pressing the Add Item button.
"

  Response.Write "

"

  End If

  <% End If %>

  问: 如何使用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 的主要内容选"WWW服务" 并编辑

  5.进入后选择"主目录" tab,在应用程式设定项目中按 "设定"

  6.进入后选"处理程序选项" tab,就可以看到"指令档快取记忆体" 下有三项可选择

  不要快取处理ASP档案

  快取处理所有要求的ASP档案

  要快取处理的ASP档案的最多数目[ ]

  问: 当使用了Proxy Server的情况下,Webpage回传一个"Object Moved"的错误,要如何修改asp程式解决这个问题?

  答: <%

  response.redirect ....

  以下的程式码可以解决Proxy Server发出page moved讯息

  <%

  response.clear

  response.redirect ...

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

  答: 当使用超过30个不同asp pages,就必须增加AspScriptEngineCacheMax 的Metabase 参数值。

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

  Microsoft VBScript runtime error '800a0046'

  Permission denied

  答: 请确定最后的参数有包含一个反斜线(backslash) ,说明如下

  是 "c:\temp\"

  而不是 c:\temp"

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

  Welcome

  答: 可利用以下的code

  'Store the NT LOGON name minus the doamin name in a session variable

  LN = Request.ServerVariables("REMOTE_USER")

  Session("NTLogon") = UCase(Right(LN, Len(LN) - InStr(1, LN, "\")))

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

  答: 可以的,但只有使用Java applet,可以使用 .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档案,请改用

  

  问: 哪些作业系统支援执行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浏览器。

 

值班QQ
域名、虚拟主机、云服务器产品售后
IDC托管、租用、机柜大带宽产品售后
值班电话
返回顶部