win服务器 文件上传下载出现“未指定的错误” 解决方法汇总

时间:2021-07-14 10:45:07

环境

  WIN平台IIS服务器

    经常出现于ASPX页面 

汇总

  1.权限问题

  出现场景 : 基于ACCESS数据库

    原因解析 :

    1.首先需要排除自身问题,例如建表使用关键字,格式错误,插入数据与数据库类型不匹配等等

    2.TEMP权限检查,当数据写入数据库的时候需要获取当前服务器权限只有设置了IIS的temp写入权限才能进行数据写入

  解决办法 :

    第一种解决方法:使用Ms Access里的“工具->数据库实用工具->压缩和修复数据库”来修复db/global.asa。如果修复后还是出错,请查看db目录下是否有global.dbl文件,如果有请删除,如无法删除请结束服务器w3wp.exe进程(win2003)或Aspnet_wp.exe进程(win2000)后再删除。
    说明:该种方法适用于数据库设置错误问题导致数据写入失败,比较容易发现问题所在


    第二种解决办法:
    设置Internet信息服务(IIS)管理器中的应用程序池,更改网站的程序池属性见下图:

    win服务器 文件上传下载出现“未指定的错误” 解决方法汇总

    调整后即可解决问题。
    说明:标准的IIS服务器权限设置问题,一般企业有运维部门专门维护通常不会出现该情况


    第三种解决方法:
    其实只要很简单的几步:
    开始。。。运行。。。regsvr32 jscript.dll开始。。。
    运行。。。regsvr32 vbscript.dll开始。。。
    运行。。。iisreset 

    说明:简单百度了一下 REGSVR32为系统注册与反注册工具,该工具主要用于修复系统文件比如上面所指regsvr32 jscript.dll 修复的是js文件本机注册问题相当于重新修复引用的概念(不确定)它里面包含很多工具具体自行查看,最后一句IISRESET 重启iis服务

  2.系统服务问题

    出现场景:各种文件上传,EXCEL WORD 等等

    原因分析:win平台下上传文件大多数分为两种 OLDB 与NPOI

      OLDB:当文件上传到服务器的时候服务器需要调用本身的解析器去读取当前文件通过链接字符串形式获取到数据从而反馈DataSet或者 DataTable数据,分析底层代码如下  

    win服务器 文件上传下载出现“未指定的错误” 解决方法汇总

    当进行链接时会直接抛出异常,当然上述截图只是测试用

  解决办法:

    首先,如果该情况发生在生产服务器上优先采用NPOI方式上传不影响正常业务,其次发现问题跟踪后对比服务器配置,未更改情况下对比win服务确定是否由于更新导致某些服务异常,最后尝试解决。

  错误分析:

  

异常详细信息: System.Data.OleDb.OleDbException: 未指定的错误 

[OleDbException (0x80004005): 未指定的错误] System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) +1131233 System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) +53 System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup) 


网上的解决方案很多,正确答案原来如此: 

在连接数据库的时候是这么做的: 

public static OleDbConnection getxwdtConn() 

{ 

string connectionstring = WebConfigurationManager.ConnectionStrings["xwdtconnection"].ConnectionString; 

OleDbConnection con = new OleDbConnection(connectionstring); 

return con; 

} 

在MS sql或Access,中都不会有问题,调试也不会有问题。 

发布之后会有如上错误提示。 

是因为数据库的操作中肯定有oledbdatadapter,或dataset,并且使用了con.open()和con.close(),。 

具体解决只需把open 和close删掉就可以了,因为用的是断开式连接。 

如果改用静态变量的做法

 2018年4月25日更新

 win服务器发生该问题后,由于Oldb反馈为null 改为npoi 方式上传 后更新npoi系统引用文件莫名其妙修复................若遇到该问题不妨一试,记得对比win服务