使用IIS7.0的asp上传大文件时出现如下错误:
HTTP Error 404.13 - Not Found
描述: 请求筛选模块被配置为拒绝超过请求内容长度的请求。
错误代码: 0x00000000
通知: BeginRequest
描述: 请求筛选模块被配置为拒绝超过请求内容长度的请求。
错误代码: 0x00000000
通知: BeginRequest
看过不少朋友的代码,包括一些学了挺长时间的朋友,在对数据库的处理当中从来不使用事务,或者有些虽然使用了事务处理,但并没有达到他们所预期的效果。实际上,真正要做一个商业化的程序,对数据的事务处理是必不可少的。下面就一些事务处理的问题谈一下我的看法。
什么叫事务,这里我就不祥述了,感兴趣的朋友可以自己看一下sql server的book online或是msdn。我举一个浅显的例子吧,比如说你要把一个form中的数据同时向两个相关联的表中插入,如果不使用事务,那就可能出现这用情况,第一个表中成功更新后,突然数据库出现意外状况,第二个表的操作没有完成,这样的话有什么结果也就不用说了。要避免这种情况,就应该使用事务,它的作用就是要不两个表都操作成功,要不都失败,换句话说,就是保持数据的一致性。具体做法是这样,在begin trans之后的所有操作只有到commit trans的时候才真正执行,如果其中有一部分操作失败,那么就用rollback trans恢复整个事务,是数据保持所有操作进行以前的状态。但这里需要注意的一个问题是,如果有一部分操作失败,但不是致命错误,那么数据库不会停在那儿,而是继续下一条操作,直到执行到commit trans , 系统会执行那些已经成功的操作,这也就是为什么有些程序尽管用了事务但还是出现只有部分数据被更新的情况,而不是预想的能够保持数据的一致性。所以正确的做法应该是在每一个对数据的操作后,都应该检查一下@@error的值,如果出错则转向错误处理部分,该部分负责执行rollback trans ,恢复整个事务。
看下面两个表,这是一个bbs的注册用户表以及它的相关表。
if exists(select * from sysobjects where ID = object_id("BBSUser"))
drop table BBSUser
go
create table BBSUser
(
ID int Primary key identity not null ,
UserName varchar(20) default "" not null ,
Password varchar(10) default "" not null ,
UserType tinyint default 0 not null , --用户类型,1为斑竹
Email varchar(100) default "" not null ,
HomePage varchar(100) default "" not null ,
ICQ varchar(20) default "" not null ,
Signature varchar(255) default "" not null , --签名
Point int default 0 not null , --用户积分
)
go
if exists(select * from sysobjects where ID = object_id("BBSUserAction"))
drop table BBSUserAction
go
create table BBSUserAction
(
id int Primary key identity not null ,
UserID int default 0 not null , --用户ID
SignTime datetime default getdate() not null , --登录时间
IP varchar(15) default "" not null , --登录IP
)
go
On Error Resume Next
conn.begintrans
conn. Execute strSQL
If conn.Errors.Count= 0 Then
conn.CommitTrans'事物结束
Else
conn.RollbackTrans
conn.Errors.Clear
End If
.... '连接数据库
conn.open
conn.BeginTrans
.....
'此后,在每次数据库操作的时候,判断 err.number <> 0,如果是true, Conn.RollBackTrans
'直到两个表都操作完成后,在recordset关闭后,再:
Conn.CommitTrans
.... '关闭数据库连接
一、问题的提出
随着互连网的发展,网站的数量以惊人的数字增加。网站的作用除了给广大网友们提供信息资讯服务外,还应该成为网友们上传与下载文件的场所。在上传与下载文件的过程中 ,传输时间是关键,这就要求有较快的传输速度。在传输速度固定不变或是上下变动不大的情况下,尽量减小传输文件的体积,是一个可行的办法:上传文件的时候,先将要上传的文件用WINRAR压缩,上传成功后在网站内通过程序实现解压缩;下载文件的时候,先将要下载的文件在网站内通过程序实现压缩然后再下载。本文就针对该问题的解决进行探讨。
二、方法与说明
首先要上传一个WINRAR的解压程序,就是WINRAR自己的解压程序,只需要它的核心程序RAR.EXE这个文件就可以了,在WINRAR的安装目录里可以找到。然后要上传一个执行RAR.EXE的程序 CMD.EXE 这个是WINDOWS操作系统里的程序,在系统盘WINNT/SYSTEM32文件夹中可以找到。上传完这两个文件后,就需要编写一些程序代码来实现压缩与解压缩。




