前景:服务器在本地的VS编辑器运行起来正常,但是部署上就会报错。
我开发的这个项目,是因为后台要对客户端前台上传的Excel表进行操作,所以才会出现以下问题,在这之前,
IIS服务器会要求把项目网站对应的应用程序池设置为 启用32位应用程序 设为 TRUE,才可对Excel进行操作
但是,在把启用32位应用程序 设为 TRUE之后,再次访问这个项目的时候报错了。
“/”应用程序中的服务器错误。
运行时错误
说明: 服务器上出现应用程序错误。此应用程序的当前自定义错误设置禁止远程查看应用程序错误的详细信息(出于安全原因)。但可以通过在本地服务器计算机上运行的浏览器查看。
详细信息: 若要使他人能够在远程计算机上查看此特定错误信息的详细信息,请在位于当前 Web 应用程序根目录下的“web.config”配置文件中创建一个 <customErrors> 标记。然后应将此 <customErrors> 标记的“mode”属性设置为“Off”。
|
注释: 通过修改应用程序的 <customErrors> 配置标记的“defaultRedirect”属性,使之指向自定义错误页的 URL,可以用自定义错误页替换所看到的当前错误页。
|
当我按照以上提示 创建一个 <customErrors>并把“mode”属性设置为“Off”后,运行项目,接着又出现以下错误。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.BadImageFormatException: 未能加载文件或程序集“XXXXXX”或它的某一个依赖项。试图加载格式不正确的程序。
源错误:
执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。 |
程序集加载跟踪: 下列信息有助于确定程序集“XXXXXX”未能加载的原因。
|
堆栈跟踪:
|
其中,上述“XXXXXX”的内容有“EntityFramework.SqlServer”和“AspNetPager” 和“EntityFramework”及“FluentScheduler” 等等等等
这个IIS发布的.NET 项目报的错误,找了我一天半的解决方法没找到,我跟大家捋一下,我在网上找到的答案,没有一个实用。以下是我度娘找的答案(当然如果你操作了以下几种解决方案,还是没有解决问题,那可尝试用我的方法,保证90%有效)
方案1、尝试过给C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files添加的everyone权限(无效--根本就不是权限问题)
方案2、停止Indexing service服务 (无效)
方案3、配置ASP.net 的临时目录不受Indexing service服务的影响 (无效)
方案4、修改windows\temp目录权限,设asp.net Machine Account为对这个目录的完全控制权限(无效)
方案5、把整个bin目录删除,重新上传最新的,就解决了,不能只上传修改的DLL文件(无效--这方法太扯淡了,根本不可取!切勿操作)
解决方法:
第一步:将 IIS--应用程序池--(选中你运行项目中所绑定的应用程序池)--高级设置--启用32位应用程序 中设置为 true
第二步:点击网站的 isapi 筛选器,进入之后如下图
根据名称可以看出 ,是服务器上有个安全狗。把这对应的两个删掉,重启IIS网站,即项目能正常运行了。
(提示:isapi 筛选器在如下图位置)