vc下新建一个工程调用这个DLL一点问题都没有,但是用ASP.net调就出错:
System.Runtime.InteropServices.SEHException: External component has thrown an exception.
这句错误应该是说DLL出现的问题,可是不知道怎么调试,郁闷了好几天了,在CSDN上也查了,还是不能解决。大家觉得可能的错误会出现在哪里?或者怎么能在asp。net中跟踪DLL呢?
顺便问一下:DLL中可以写文件吧?我把写文件的权限已经给了asp.net了

解决方案 »

  1.   

    你写的com适合web下用吗?完成什么功能?
      

  2.   

    我没有写COM,只是一个简单的DLL,任务是从数据库中读取数据,并把数据保存在硬盘上
      

  3.   

    to precipitant(塞北的雪) 
    我觉得应该是适合WEB下用的,因为数据库和文件目录操作都是对服务器端操作的。
      

  4.   

    我对vc不清楚,但是从错误状况来看是dll的问题。
      

  5.   

    会不会是数据的问题,导致dll发生了异常,你用最简单的数据测试一下。
      

  6.   

    我逐段测试,发现问题出现在这里:
    CDatabase db1;
    if(db1.OpenEx(DSN)==0)
      return FALSE;
    可是这只是连接数据库的操作而已,怎么会在这里抛出异常呢?
    我在ODBC建立了这个DSN。测试连接也没问题呀!顺便为一下:DLL抛出的异常有办法看到吗?
      

  7.   

    就是if(db1.OpenEx(DSN)==0)连接数据库有问题?有谁知道怎么解决吗?我查了ODBC设置没有问题的。可能是什么问题呢?求救阿
      

  8.   

    vc中,用啥连接数据库?ado?或许就是这里的问题。帮你查查,不过不懂vc.
      

  9.   

    我用的是CDataBase类连接数据库,不是ADO。我刚才生成一个只有数据库连接的DLL:
    extern "C" _declspec(dllexport) int MyTest()
    {
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
    CDatabase db1;
    if(db1.OpenEx("DSN=gch_test;UID=sa;PWD=1637")==0)
    return 1;
    return 0;
    }
    但是在asp中调用还是出现上面说的错误。难道CDatabase和asp有不兼容的问题?
      

  10.   

    建议,你在你的DLL中加入写Log文件,来跟踪测试。我想应该没有问题因为几周前我刚做过。
      

  11.   

    to  lrcstar_love(enchanter) 
    我修改了代码,将异常信息发送到文件,可是执行完后里面什么都没有,而这个目录我已经赋予asp.net完全控制的权限,可以写东西的。
    你说的写log是写到让“管理工具-〉事件查看器”看到的地方吗?这个我没用过,你有代码片断吗?
    extern "C" _declspec(dllexport) int MyTest()
    {
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
    CDatabase db1;
    try{
    if(db1.OpenEx("DSN=gch_test;UID=sa;PWD=1637")==0)
    return 1;
    }
    catch(CDBException e)
    {
    ofstream of("e:\\temp\\1.txt");
    of<<e.m_strError;
    of.close();
    }
    return 0;
    }
      

  12.   

    我找到错误原因了,我的DSN是建立在用户DSN上的,我试着在系统DSN里建了一个,搞定,原来asp程序以asp。net帐户运行,访问不到我创建的用户DSN。散分!