ASP技巧TOP 10(四)

技巧

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代码。

时间: 2024-07-31 11:31:43

ASP技巧TOP 10(四)的相关文章

ASP技巧TOP 10(转)(四)

技巧 9.如何更新被锁定的DLL如果你正在使用Visual Basic COM组件,一定知道更新组件版本时候所出现的错误信息"不能更新DLL文件,访问禁止",或许已经有好多次被它挡驾了.下面我们介绍的是一个小巧的批命令文件,你可以用它来自动启动或关闭锁定DLL文件的MTS. 问: 我们所用的IIS 4.0上运行着ASP和一个Visual Basic 6.0 DLL文件,DLL文件用来为ASP页面提供数据服务.问题是,当我们想要把Web服务器上的DLL升级到新的版本时,系统总是显示DLL

ASP技巧TOP 10(转)(三)

技巧 6.处理数据库日期值1099 如果说包含引号的字符串会带来问题的话,那么对我们的某些读者来说向数据库传递日期数据更是容易出错.下面我们根据所用数据库系统的类型分别解释如何正确地完成这一任务. 问: 如何使用ASP向数据库传递日期数据? 答: 答案与所用数据库类型有关.假设我们使用名为"strDate"的变量保存日期数据,如果使用Access数据库,那么生成字符串的代码为: strSQL = " 合法的SQL命令 " & "#" &a

ASP技巧TOP 10(转)

技巧 1.避免使用DSN连接数据库1054 是否仍旧在使用ODBC系统或文件DSN连接数据库?请用OLEDB提供者代替它,这是一种速度更快而且不需要使用DSN的数据库连接技术.使用OLEDB提供者,你不必再为了创建系统DSN恳求ISP(或数据库管理员/网站管理员),也不必为了网站文件位置的变化而修改配置. 问: 我看到过大量通过数据资源名字(DSN)连接数据库的例子,不过我现在想不通过DSN连接数据库.在ASP中可以实现这一点吗?能否举几个具体的例子说明?我希望新的连接方法不依赖于系统DSN,但

ASP技巧TOP 10(转)(二)

技巧 3.数据库搜索技巧1082 在数据库搜索中,如果我们只使用等于符号搜索"Pro"是无法提取出那些能够匹配"ASP Pro"的记录的.下面我们要介绍的是如何使用SQL的LIKE操作符实现部分文本搜索. 问: 从数据库提取记录集时,是否有可能提取那些包含比我所指定的文本更多内容的记录,且不对搜索文本的出现位置有具体要求? 例如: StrName = 'Direct'RSShops = Server.CreateObject("ADODB.Recordse

ASP技巧TOP 10(一)

技巧 1.避免使用DSN连接数据库1054 是否仍旧在使用ODBC系统或文件DSN连接数据库?请用OLEDB提供者代替它,这是一种速度更快而且不需要使用DSN的数据库连接技术.使用OLEDB提供者,你不必再为了创建系统DSN恳求ISP(或数据库管理员/网站管理员),也不必为了网站文件位置的变化而修改配置. 问: 我看到过大量通过数据资源名字(DSN)连接数据库的例子,不过我现在想不通过DSN连接数据库.在ASP中可以实现这一点吗?能否举几个具体的例子说明?我希望新的连接方法不依赖于系统DSN,但

ASP技巧TOP 10(二)

技巧 3.数据库搜索技巧1082 在数据库搜索中,如果我们只使用等于符号搜索"Pro"是无法提取出那些能够匹配"ASP Pro"的记录的.下面我们要介绍的是如何使用SQL的LIKE操作符实现部分文本搜索. 问: 从数据库提取记录集时,是否有可能提取那些包含比我所指定的文本更多内容的记录,且不对搜索文本的出现位置有具体要求? 例如: StrName = 'Direct'RSShops = Server.CreateObject("ADODB.Recordse

ASP技巧TOP 10(三)

技巧 6.处理数据库日期值1099 如果说包含引号的字符串会带来问题的话,那么对我们的某些读者来说向数据库传递日期数据更是容易出错.下面我们根据所用数据库系统的类型分别解释如何正确地完成这一任务. 问: 如何使用ASP向数据库传递日期数据? 答: 答案与所用数据库类型有关.假设我们使用名为"strDate"的变量保存日期数据,如果使用Access数据库,那么生成字符串的代码为: strSQL = " 合法的SQL命令 " & "#" &a

Tomcat配置技巧Top 10排行榜

技巧 1.配置系统管理(Admin Web Application) 大多数商业化的J2EE服务器都提供一个功能强大的管理界面,且大都采用易于理解的Web应用界面.Tomcat按照自己的方式,同样提供一个成熟的管理工具,并且丝毫不逊于那些商业化的竞争对手.Tomcat的Admin Web Application最初在4.1版本时出现,当时的功能包括管理context.data source.user和group等.当然也可以管理像初始化参数,user.group.role的多种数据库管理等.在后

Tomcat配置技巧Top 10 [ZT]

技巧 你所需要做的就是:按照你的需求配置Tomcat,只要你正确配置,Tomcat一般都能适合你的要求.下面是一系列关于Tomcat的配置技巧,这些技巧源自于我的书:<Tomcat权威指南>,希望对你有所帮助. Jason Brittain 1. 配置系统管理(Admin Web Application) 大多数商业化的J2EE服务器都提供一个功能强大的管理界面,且大都采用易于理解的Web应用界面.Tomcat按照自己的方式,同样提供一个成熟的管理工具,并且丝毫不逊于那些商业化的竞争对手.To