我为我们的一个网站系统做了一个ASP组件,在本机测试正常,发布出去,有各别用户说一调用页面就会死掉,然后IIS就全死了,其它网站不能在使用。该组件中与IIS中有关系的就是获取当前的域名与当前网站的路径和对Session操作一次,代码如下,
Request.ServerVariables.Item[37];//返回域名
Request.ServerVariables.Item[4];//返回路径
//操作Session
if Session.Value[Web_SessionName+ 'AdminNames'] = '' then
    REsult := OperErr
  else
Result := StrToInt(Session.Value[Web_SessionName+ 'AdminLevels']);
其它的都是数据库的连接,如
function TLDOConn.OpenConn(const DBPath: WideString): Byte;    //创建连接
const
  DBSource = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=';
begin
  try
    DBConn := CreateOleObject('ADODB.Connection');         //DBConn是全局变量
    DBConn.Open(DBSource + DBPath);
    Result := OperSuc;
  except
    Result := OperErr;
  end;
end;function TLDOConn.CloseConn: Byte;                      //关闭连接
begin
  if VarIsNull(DBConn) then
  begin
    DBConn.Close;
  end;
end;
还有就是用到了ADOTable这个组件,它用在一个方法里,用后就释放了
在我的这个程序中,没有用到如CoInitialize等方法,与它们有关系嘛?大家帮我分析一下,IIS死的可能性,死掉的系统是2000,多谢

解决方案 »

  1.   

    1、你写一个最简单的组件,就是什么也不做的那种,用ASP调用一下看是否会死,不死的话多用户同时访问看看,如果不死说明IIS没有问题。反之IIS有问题。IIS的设置你确定都看过并理解了吗??2、在你的开发机器上用多用户仿问看死不死!如果不死说明程序没问题!定位为系统问题!3、下面搞你的死机程序,如果是我就在1所说的简单代码中一块一块的加入代码,看是加到哪出错!
    这种错误我最怕怕了!!!!
      

  2.   

    关键是在我机器上怎么也不死,现在是安装组件后,在第一次调用页面时就会死,IIS我也不知道,因为不是我的机器,都是网络上的服务器
      

  3.   

    首先我没做过,没什么经验,IIS的配置有问题的可能性很大,和管理员沟通一下吧。另外加上线程同步的技术试一下,能想到的也就这么多了。wish you luck ,man
      

  4.   

    谢谢你  Bitter_fish(苦鱼) 
    大家还有什么想法,分好说
      

  5.   

    你看看Delphi开发人员指南,有专门讲如何调试的,就是先把它搞成进程外对象,然后与桌面交互等等,估计是内存管理方面的问题,函数尽量用stdcall