HTTP 错误500.24 - Internal Server Error

48 篇文章 4 订阅

                                    

【方案一】

1.解决方案:应用程序池右击—设置程序应用程——修改图中标注的两项

            


2.用到的知识点解析

【应用程序池】

:将一个或多个应用程序链接到一个或多个工作进程集合的配置。因为应用程序池中的应用程序与其它应用程序被工作进程边界分隔,所以某个应用程序池中的应用程序不受其它应用程序池中应用程序所产生的问题的影响

理解:程序池就是放置程序的一个盒子,起到程序隔离的作用,防止某一站点的崩溃而影响其它程序。

举例:应用程序池相当于教室,网站相当于班级,一个班级对应一个教室,不同班级上课互不影响,每个网站都有单独的应用程序池。


【管道模式】

助理解

1>深入解读IIS 7中应用程序池的管道模式

2> IIS托管管道模式的集成和经典比较

3>托管管道模式的说明

Classic:(经典模式)处理ASP.NET程序时,需要退出管道,然后把程序转入ASP.NET ISAPI过滤器,通过ISAPI的处理,再将一个HTTP响应返回到管道,再送回到客户端。(只能处理ASP.NET程序)

                            

Integrated:(集成模式)把ASP.NET集成到管道中,是处理无论ASP.NET程序还是非ASP.NET程序都在管道中进行,不考虑程序类型(处理的程序类型多了)

                                                  

区别:Integrated简化了工作


【为什么要把启用32位应用程序改为true???】

1>因为:Windows和system32下面都是64位的,SsWow64下面是32位的,再IIS应用程序池中默认的.dll是64位的,这个时候调用32的.dll就会出错。

2>在vs的编译设置中,目标平台设置为:AnyCpu,关于.NET编译的目标平台(AnyCPU,x86,x64)

3>AnyCpu编译的DLL将在64位CLR上执行,在加载它的进程相同的CLR上运行

(在第一次发布时这样改过来问题就解决了,但通过上面的分析,感觉跟上面的32位应用程序改为true没关系呀,通过分析,感觉都是用的64位的dll呀,但是第一次这样改就对了,通过分析后我就把上面改的两项又改为原来的默认值,结果还是可以运行的。就不知道了)

   

【逐步探究各步使用的DLL】

         脑洞大开,于是乎把B,D、Model层的目标平台都改为了X86(应为X86编译的程序集将在WOW64下运行的32为CLR运行),再次发布就会出现如下问题,

    

        注意这报错的是B层,有限,因为先用到B层,所以B层先报错,于是乎把B层改为Any CPU,重新发布,这次果然出现同样的错误,只不过显示是D层出错了,于是乎,我就把IIS中的32位应用程序改为false,哈哈此问题就解决了,所以初步判断题目中的问题不是DLL文件引起,所以解决方案一不是解决题目中的问题的办法。


【方案二】

       在自己所建的的网站下双击身份验证,将ASP.NET模拟的状态改为启用,改问题就又出现了,然后我再改为禁用,就可以了(通过反复操作验证,本人认为是方案二引起的题目中的问题,所以方案二才是此问题真正的解决方案)


福利:IIS发布网站及添加应用池



评论 52
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值