ASP技巧TOP 10(四)

來源:互聯網
上載者:User
技巧 9、如何更新被鎖定的DLL
如果你正在使用Visual Basic COM組件,一定知道更新群組件版本時候所出現的錯誤資訊“不能更新DLL檔案,訪問禁止”,或許已經有好多次被它擋駕了。下面我們介紹的是一個小巧的批命令檔案,你可以用它來自動啟動或關閉鎖定DLL檔案的MTS。

   問:

   我們所用的IIS 4.0上運行著ASP和一個Visual Basic 6.0 DLL檔案,DLL檔案用來為ASP頁面提供資料服務。問題是,當我們想要把Web伺服器上的DLL升級到新的版本時,系統總是顯示DLL檔案正在使用中,既不能上傳也不能註冊這個新的DLL。我們試過關閉Web網站以及IIS,但DLL檔案仍處於使用狀態。唯一的辦法似乎是關閉伺服器。如你所知,網站運行時關閉伺服器顯然不太合適。你是否有解決這個問題的方法?有一個16位的工具軟體WPS可以關閉DLL,然而,它不能用於VB6的DLL檔案。

   答:

   不能更新DLL檔案的原因在於Microsoft Transaction Server(MTS)已經開啟了DLL的一個執行個體,必須使用mtxstop才能關閉它。首先,建立批命令檔案FlushCache.bat,在檔案中輸入以下內容:
net stop iisadmin /y
mtxstop
net start w3svc

   運行這個批命令檔案。它將在大約5秒鐘內關閉Web伺服器並重新啟動它。在關閉和啟動兩個操作之間它將清除MTS緩衝,然後你就可以更新DLL檔案。

   第一次運行批命令檔案的時候,要注意一下其他被關閉的服務(例如FTP服務等)。寫下這些被關閉的服務,然後開啟批命令檔案,加入代碼使得這些服務也被重新啟動:
net start < 服務的名字 >

   2000年06月03日,Bill Bassett提出了另外一種方法:

   有一種解決該問題的更為簡單的方法,這就是配置應用使其運行在自己獨立的記憶體空間中。運行IIS MMC,右擊包含目標應用的分支,選擇“屬性”。在屬性對話方塊中間的應用設定區,輸入應用的名字並選中“在獨立的記憶體空間運行”檢查框。

   應用啟動並執行時候,只要再次開啟其屬性頁面就可以看到此時“卸載”按鈕已經變為可用了。點擊這個按鈕應用卸載,你可以更新DLL檔案。該操作並不取消DLL的註冊,所以這些工作要用regsvr32手工完成。這種方法要比關閉IIS等服務再重新啟動它們要好。

10、記錄檔案下載日誌
這是一個簡單但很實用的技巧,用於監測有多少使用者從網站下載了檔案。

   問:

   我們需要監測使用者在網站上的檔案下載操作。當使用者點選連結下載檔案時,我們希望能夠運行某個ASP檔案將日誌資料寫入SQL Server資料庫,然後執行下載操作。問題是,ASP頁面如何才能在記錄日誌資料之後再將檔案下載到用戶端?

   答:

   竅門在於用超級連結啟動第二個“後台”指令碼,用它來記錄下載日誌並啟動下載過程。只要第二個頁面不產生任何HTML輸出,使用者瀏覽器將仍舊顯示第一個頁面。

   下面是第一個檔案中的連結樣本:

   Download code.zip (不要點擊這個連結,它只用於示範,沒有任何實際功能。)

   以上連結由下面的代碼建立:
< A HREF="dnladd.asp?filename=code.zip" >Download code.zip< /A >

   使用者點選連結時我們把待下載的檔案名稱傳遞給了第二個檔案dnladd.asp。Dnladd.asp包含了把下載檔案名稱字和其他資訊寫入資料庫的指令碼。完成資料庫操作後,dnladd.asp用如下代碼啟動下載過程:
Response.ContentType = "application/x-zip-compressed"
Response.Redirect request("filename")

   注意:不要在dnladd.asp中輸出任何HTML代碼。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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