asp.net服务器上几种常见异常的解决方案.
如下
(1)配置Asp.net站点ISS报出:服务器应用程序不可用.具体异常信息如下:
服务器应用程序不可用
您试图在此 Web 服务器上访问的 Web 应用程序当前不可用。请点击 Web 浏览器中的“刷新”按钮重试您的请求。
管理员注意事项: 详述此特定请求失败原因的错误信息可在 Web 服务器的系统事件日志中找到。请检查此日志项以查明导致该错误发生的原因。
我检查ISS上其他的配置.发现全部都是Asp编写的网站.属性中查看运行的环境竟是Asp.net Framework 1.1版本. 我修改成了.NET FrameWork2.0版本.结果出现这个错误提示.
(1)一般情况下.NET2.0和.NET1.1在程序池公用时就会出现"服务器应用程序不可用"这个异常.其实是进程池调用冲突的问题,如果访问的两个应用程序,分别是2.0 和1.1, 而且他们共用一个进程池,
IIS 无法同时将其解析2种版本,就会出现如上的错误.
解决问题办法:修改其中之一的进程池, 如把 2.0的应用程序的进程池改为 ASP.NET 2.0 . 即可
(2)方法二:重新注册IIS, NET\Framework\v2.0.50727里的aspnet_regiis.exe 运行它,重新注册一下.net aspnet_regiis.exe -u 先卸载 aspnet_regiis.exe -i 重新安装 有时候重启一下服务器就好了.
有时按照上面的两种方法配置.还会报出同样的异常.接着查看一下系统事件日志.来看看报出异常具体信息.这是在11-10日10点这个时段服务器上系统事件日志:
其中详细信息:
1:由于无法创建应用程序域,因此未能执行请求。错误: 0x80070005 拒绝访问。
2:未能初始化 AppDomain:/LM/W3SVC/1635210705/Root Exception: System.IO.FileLoadException
Message: 未能加载文件或程序集“System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。拒绝访问
谷歌一下找到一个合理的解决方案:
1:安装2.0之后,在IIS的虚拟目录的属性设置中会多出一个ASP.NET标签,在那里边把运行时调整为2.0,默认使用的是1.1的运行时。
2:这个是权限问题,首先检查应用程序池的属性,看看它是以什么用户身份运行的,一般是NETWORK SERVICE 然后确保这个用户对.NET Framework 2.0的目录有访问权限,事实上应该是有的。目录是systemroot:\Windows\Microsoft.NET\Frameworks \2.0.xxxx .如果以上两条都对,很不幸,你遇到了一个很奇怪的问题,我上次是把应用程序池的用户身份改成本地系统来运行的。按照第二种解决方案配置: 把运行池的访问用户设置为"本地系统", 然后运行程序, 错误没在出现, 成功解决,
当然现在站点有的设计Silverlight集成开发用的.NET环境是3.5版本的.安装后.net FrameWork3.5SP1后.在属性中Asp.net一栏中依然只是1.1和2.0. 有人就问为什么没有3.5?
从官方治疗找到:3.5是基于2.0的 所以IIS里边只有2.0. 3.5相对2.0只是增加了一些类型库.他们的JIT是相同的所以IIS只需要2.0就可以了 没有必要存在3.5.3.5的运行的还是基于2.0上边
(2)在SQL脚本时用T-sql插入汉字时出现乱码类似(????)等.如图.
下午处理几个版本更新。需要更新服务器上SQl2005的数据库.我通过Visor生成数据库脚本执行时遇到汉字.就出现类似(???)乱码. 在网上一直没有找好成型解决方案.于是乎就对比着SQL2000版本原版数据库属性.发现在排序规则上有一定出入.SQL2005上默认的数据库排序规则是:SQL_Latin1_General_CP1_CI_AS,如图.
这就是导致乱码原因所在.将排序规则由默认的SQL_Latin1_General_CP1_CI_AS修改为Chinese_PRC_CI_AS. 或在利用T_SQL语句在创建时执行:ALTER DATABASE BasicDB COLLATE Chinese_PRC_90_CI_AS
注意:在修改时该数据库对应的属性时必须关闭与该数据库所有的对外连接.否则导致修改不成功.然后通过重启SQL服务生效.