你的ID不是自动增长的那种?如果不是那你就算一个表也得考虑并发啊 假定你用的是SQL Server如果
你的ID是自动增长的, 那使用 SCOPE_IDENTITY() 来返回, 如下declare @newId intinsert into table_A (column1, column2) values(v1, v2)select @newId = SCOPE_IDENTITY()insert into table_B (idcolumn, column3, column4) values (@newId, v3, v4)select @newId /* add this line if you want use the new id in your C# code */ 如果你的ID不是这样的, 那你得用事务, 然后锁表了, 建议单开一个表用来存储最后一个ID值。declare @newId intselect @newId = NextId from identity_log with (UPDLOCK) where tablename = 'table_A'insert into table_A ...insert into table_B ...UPDATE identity_log set NextId = @newId + 1 where tablename = 'table_A' 这段代码要运行在事务中, 推荐使用 SqlTransaction 或 TransactionScope当然也以把以上的SQL改一下, 加个 begin tran, rollback tran, commit tran, 并正确使用 if(@@error <>0)不应该这么问,.NET是一个框架,用的是IIS发布,是IIS的撑不住压力.
在服务里关闭iis admin service服务
找到windows\system32\inesrv\下的metabase.xml
相关说明设置如下:
AspSessionMax
作用:属性指定了 IIS 允许的最大并发会话数。当达到该限定时,如果客户端试图与 IIS 建立新连接,则客户端将接收到不正确信息(HTTP 500"服务器太忙")。
AspRequestQueueMax
作用:该属性指定了允许进入队列的并发 ASP 请求的最大数目。在队列占满时,任何试图请求 ASP 文件的客户端阅读器都将收到 HTTP 500"服务器太忙"的不正确。
留心:在 IIsWebService 级别上配置该属性可运用于所有级别上的所有进程内的和共用的进程外运用 程序项。进程内的和共用的进程外运用 程序忽略 IIsWebServer 级别及更低级别上的配置数据库配置。但是,如果该项是进程外的隔离运用 程序,则运用 IIsWebServer 级别或更低级别的配置。
改完后运行iis admin service.
如果好给我加分哦
评论列表(0条)