Global.asa中定義<Object>的問題
Global.asa中內容:
<object RUNAT=server scope=Session ID=g_conn ProgID= "ADODB.Connection "> </object>
在asp文件里,就不能再用
set g_conn = Server.CreateObject( "ADODB.Connection ")
但可以這樣操作:
g_conn.open application( "connstring ")
請教:
<object> 里定義的,是不是就不需要再CreateObject了,還是有其他原因
謝謝
------解决方案--------------------已经创建了object.
------解决方案--------------------你在global.asa中使用 <object> 在Session中创建了ADODB.Connection后,在用户初次访问页面后IIS自动为其创建对象实例,在session期间都可以直接用,不需要用CreateObject创建。
但问题在于,创建在Session中的对象的线程模型是有要求的,一般asp系统内置的对象包括Scripting.*, ADODB.*(虽然ADO有办法将线程模型改为自由线程)都不适合于保存在Session中,易造成100%CPU问题。此外,Session中保存数据库连接的做法看似不需要每次重新创建连接,实际上是个似是而非的做法,会影响ODBC连接池的使用,远不如在页面内直接创建连接,并及时关闭且设为Nothing。
建议尽量不使用session,非要使用的话,就只保存一些数字,字符串。
------解决方案--------------------CreateObject是动态创建, <object> 是静态创建,两者根据情况用其一即可。
还是不要将Connection放在session为好。