ASP的Internet/Intranet編程常見問題__編程

來源:互聯網
上載者:User
上的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的思路設計和編寫程式,否則將事倍功半。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.