我的一个网站在IIS下打开出现问题,但在VS2005自带的IIS下没有问题,开发环境是:windows2003 IIS6.0 VS2005 数据库是access 错误提示:
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.OleDb.OleDbException: 没有可用的错误消息,结果代码: E_FAIL(0x80004005)。
源错误:
|
源文件: e:\My Site\craftszoe.com\App_Code\craftszone.cs 行: 45
堆栈跟踪:
|
针对这个问题我想请问你是否在sql语句中使用了Access数据库不支持的sql语法(比如case when等)以及是否使用了Access数据库中的关键字啊啊???能把你出现这个错误的那段sql代码页贴出来吗??
可以贴一下你的sql语句吗?
VS2005自带的IIS是一个小型的模拟器,只能在调试时使用。
实际部署时不可以用这个,应该使用window系统的IIS,所以在开发过程建议也将"项目"--“属性”--“web”部分设为外部的IIS,即windows系统的IIS。
你的程序在VS2005自带的IIS时不出错。而在部署时,access文件路径找不到所以出错。所以建议
1、在开发时使用:http://localhost/yourApplication/
或直接用端口http://localhost:8089/
然后点出创建虚拟目录即可同时在iis中生效。
2、部署时在IIS设置亦可。
这个错误微软早就有揭示: http://support.microsoft.com/kb/295297
错误的原因是:
The account that is being used to access the page does not have access to the HKEY_LOCAL_MACHINE\SOFTWARE\ODBC registry key.
IIS运行账户,无权访问注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\ODBC registry
可以用regedit32.exe作相应修改: