vc下新建一个工程调用这个DLL一点问题都没有,但是用ASP.net调就出错:
System.Runtime.InteropServices.SEHException: External component has thrown an exception.
这句错误应该是说DLL出现的问题,可是不知道怎么调试,郁闷了好几天了,在CSDN上也查了,还是不能解决。大家觉得可能的错误会出现在哪里?或者怎么能在asp。net中跟踪DLL呢?
顺便问一下:DLL中可以写文件吧?我把写文件的权限已经给了asp.net了
System.Runtime.InteropServices.SEHException: External component has thrown an exception.
这句错误应该是说DLL出现的问题,可是不知道怎么调试,郁闷了好几天了,在CSDN上也查了,还是不能解决。大家觉得可能的错误会出现在哪里?或者怎么能在asp。net中跟踪DLL呢?
顺便问一下:DLL中可以写文件吧?我把写文件的权限已经给了asp.net了
我觉得应该是适合WEB下用的,因为数据库和文件目录操作都是对服务器端操作的。
CDatabase db1;
if(db1.OpenEx(DSN)==0)
return FALSE;
可是这只是连接数据库的操作而已,怎么会在这里抛出异常呢?
我在ODBC建立了这个DSN。测试连接也没问题呀!顺便为一下: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有不兼容的问题?
我修改了代码,将异常信息发送到文件,可是执行完后里面什么都没有,而这个目录我已经赋予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;
}