现在的位置: 首页 > 综合 > 正文

IIS发布后500错误

2013年10月22日 ⁄ 综合 ⁄ 共 2105字 ⁄ 字号 评论关闭

    [机器环境]

        DB  : Sql server 2000

        IDE : Microsoft visual studio 2003, 2005

        OS  : Windows XP

       

    [问题现象]

    安装完IIS,发布好应用后,浏览该应用,浏览器报“Page 500错误”。打开IDE,F5启动调试,弹出窗口提示:“MMC检测到此管理单元发生一个错误,建议关闭并重新启动MMC”,点确定后,提示页面500错误。

 

    [尝试]

    网上有相关帖子:

    http://www.wenda.com.cn/tech/view.php?ID=1882

    http://www.tzlink.com/bbs/thread-362-1-1.html

    原因说起来,挺像回事的:

    IWAM账号建立后被Active Directory、IIS metabase数据库和COM+应用程序三方共同使用,账号密码被三方分别保存,并由操作系统负责这三方保存的IWAM密码的同步工作。但系统的对IWAM账号的密码同步工作有时会失败,使三方IWAM账号所用密码不统一。当IIS或COM+应用程序使用错误IWAM的密码登录系统,启动IIS Out-Of-Process Pooled Applications时,系统会因密码错误而拒绝这一请求,导致IIS Out-Of-Process Pooled Applications启动失败,也就是我们在ID10004错误事件中看到的

“不能运行服务器{3D14228D-FBE1-11D0-995D-00C04FD919C1} ”(这里{3D14228D-FBE1-11D0-995D-00C04FD919C1} 是IIS Out-Of-Process Pooled Applications的KEY),不能转入IIS5应用程序,HTTP 500内部错误就这样产生了

    照着帖子中的步骤,我将MSDTC的服务重新安装了一遍,没有效果;又将IIS Metabase与IWAM_MYSERVER的账户重新设置,并同步了一遍,问题仍然存在。

    尝试步骤如下:

    [重新安装MSDTC服务]

    1. 打开DOS命令窗口,输入"msdtc -uninstall"回车,卸载MSDTC服务。

    2. 输入命令“msdtc -install”回车,安装服务。

    3. 输入命令“msdtc -resetlog”回车,重置日志。

    4. 输入命令“net start msdtc”回车,启动服务。

    3. 从控制面板->管理工具中,打开组件服务,依次展开:组件服务->计算机->我的电脑,右键单击“我的电脑”,选择属性

    4. 在弹出窗口中选择MSDTC选项卡,点击“安全性配置”,勾上“网络DTC访问”,“允许远程客户端”,“允许远程管理”,“允许入站”,“允许出站”,“不要求进行验证”,“启动事务Internet协议(TIP)事务”,“启动XA事务”,点击确定。

    5. MSDTC服务重启,并成功。

    [同步IIS账户与IWAM_MYSERVER账户的密码]

    1. 右键点击桌面“我的电脑”(非快捷方式),选择“管理(G)”,弹出窗口中,展开本地用户组和组,在用户中找到IWAM_MYSERVER账户(实际名字为IWAM_你的机器名),右键点击该用户,选择设置密码,这里设置为“123456”.

    2. 打开DOS命令窗口,使用CD命令,进入c:/inetpub/adminscripts/目录

    3. 目录下输入命令“adsutil.vbs set w3svc/wamuserpass "1234456"”即可同步两个账户的密码,如果系统提示:

        wamuserpass: (string) "******"

        说明同步成功。

 

    [问题解决]

    我列出尝试的目的在于,我并不确定尝试中的两个步骤对于解决问题有没有帮助,同时也至少说明了一个思路。

    我是在作出以下的尝试后,解决问题的:

    1. 单击 开始 , 单击 运行 , 类型 mmc然后单击 确定 。
    2. 在 文件 菜单上, 单击 " 添加/删除管理单元 。
    3. 在 添加/删除管理 - 中 对话框中, 单击 添加 。
    4. 在 可用的独立管理单元 列表, 选择 WMI 控制 , 并单击 确定 。
    5. 打开CMD,进入 C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322  输入 “aspnet_regiis”

    做到前4个步骤时,问题依然存在,但当我注册完执行IIS版本注册命令后,问题得到解决。猜想,可能是机器安装了两个版本的.net framwork,导致应用所使用的framwork与当前注册的版本不一致所造成的。

 

    [一些延伸]

    从以往的经验来看,我确实在发布应用的时候,常碰到:当发布了两个基于不同.net framwork版本的应用,并使用了默认的应用池(DefaultAppPool)时,就会只要一个应用生效,另一个应用就失效的问题。

    那种情况,我们在发布的时候,尽量让不同版本的应用使用不同的应用池,即可。

抱歉!评论已关闭.