关于发布的问题

当我们开发好一个网站,发布到远程的机器上的时候,也许我们会出现400,500的一些错误信息,那时候我们千万不要急,会出现这些问题就是因为我们发布的时候,出现了不应该的错误。

就以vs2012开发程序的发布来说,有好几种,有文件系统,web deployment ,ftp等等方式,这里我就不详细的说了,自己去看网上资料,介绍的很详细。

发布为什么会出现问题呢?其实无非是两方面,一个是你程序错了,一个是你环境错了。  

首先我们来说说:如何查看你的错误信息,一种方式是在我们的程序中都有一个web.config,我们只需要在里面的<system.web></system.web>之间添加一个<customErrors mode="Off"/>就可以了,这种方式是在你网页的调试里面输出错误信息,还有就是我们自己的程序中alert一下吧,或者去部署的电脑上的事件查看器里面看看,也可以去你iis部署的网页的错误信息里面查看。

就拿我来说吧,我发布的时候拷到服务端的时候,出现了400错误,提示为errore http 404.2的错误,原因是请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理,即IIS里的“ISAPI 或CGI 限制” 的配置有问题,属于环境错了。我把网上的解释给你们看看就明白了:

“ISAPI” 是供IIS加载和调用的DLL, 如果没配置相关的ISAPI,就无法正确地解释网页的内容,

之所以会抛出后面“请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理”的错误信息,极有可能是没配置相关ISAPI对页面进行解释,导致IIS默认把页面当作静态文件来解释,所以出错,

比如:用net4.0来开发的网站,但ISAPI没配置有"ASP.Net_4.0_32bit"的DLL来对页面程序进行托管,那么IIS肯定无法正确的运行aspx里的C#代码。

解决方案是:

1)先确认网站是基于那个netframework; 

2)  然后到“应用程序池”里找网站对应的应用程序池(右击网站-> 高级设置),双击程序池, 看程序池是否也网站的net framework版本相同,

注意:net2.0,net3.0,net3.5对应的net framework版本都是v2.0.50727,而net4.0则基于v4.0.30319

3)  右击网站对应的 ”应用程序池 -> 高级设置“ 看”启用32位应用程序“,如果网站是以32编译的就要设为true, 否则为false, 一般都是32编译的,所以都选为true;

4) 如果上面的配置都没错,那就到问题的本质部分,即ISAPI的配置:

a.选中网站->功能视图-> 双击 ISAPI筛选器;

b.查看是否有与网站所基于的framework 对应的DLL,  net2.0,3.0,3.5对应的DLL是ASP.Net_2.0.50727.0, net4.0是ASP.Net_4.0_32bit或ASP.Net_4.0_64bit;

c.若没有对应的DLL,有可能是没装好IIS,即漏掉了东西,如果不知选择装哪些部分,就应该完整的把整个IIS装完;

5)如果装了vs再装iis必须得对net framework 重装一次, 运行cmd,输入:

C:WindowsMicrosoft.NETFrameworkV4.0.30319aspnet_regiis -i    

这样子就可以解决这个错误了。在这里我要说说的是在就是操作系统就拿WIN7和windows2003来说,按照上面的操作问题就不会很大,没多少区别,也许就拿ISAPI配置来说你在windows2003里面部署网站如MyWeb右击属性,也许会看到isapi筛选器这个选项卡,在里面好像是空白的其实不是,你只要在MyWeb上的网站右击属性在isapi筛选器这个选项卡里面就会看到我们ISAPI配置,而在win7中就是isapi筛选器打开就行了。

当我解决这个问题之后,我又出现了500错误,提示为errore http 500.0,原因是我们的服务端错误,属于程序的错误,我检查了一遍程序没什么错误,于是我想到了既然是服务端错误,肯定是有些dll文件没有映射到,于是我查看了一遍我引用的dll文件,发现少了几个dll文件,这个时候你只需要把你少的dll文件拷贝到bin文件夹下就行了。这时候我以为问题解决了,但依然还存在这个错误,当时可把我弄坏了,想了好几天,最后还是解决了。我在开发的时候没有在web.config里面添加<customErrors mode="Off"/>这个不知道具体错在那,我是在服务器事件查看器里面查看的,不是很详细,知道错误,但具体在那不知道。当我添加这个的时候,根据提示我把问题就解决了,是错在oracle的客户端上,我记得明明安装成功了,但是其实失败了,少了几个dll文件没有在里面。重新安装了一下就解决了。这种错误让我深刻理解了千万不要粗心。就好像在自己的开发电脑上能发成功换了一台电脑失败了。就是我们自己的环境没弄好。

不多了说了,记住发布的环境要和开发的环境要一样哦,操作系统可以不一样。

原文地址:https://www.cnblogs.com/jristy/p/3510875.html