WCF 部署到IIS 上

动手搭建一个WCF程序
https://yq.aliyun.com/articles/55014

部署WCF程序
http://blog.csdn.net/meng58/article/details/9236619

根绝这两篇博客的总结搭建完了wcf 服务,如下所示,表示搭建成功。
WCF 部署到IIS 上

但是在搭建的过程中遇到了各种问题,现在总结一下:
1.HTTP 错误 403.14 - Forbidden
Web 服务器被配置为不列出此目录的内容。
WCF 部署到IIS 上

出现这种情况的原因是我们的目录浏览没有启用,启用就可以。
WCF 部署到IIS 上

2.由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。或者:请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。
WCF 部署到IIS 上

出现这种问题的原因通常是因为先安装了Framework,后安装的IIS,导致.svc文件没有处理程序来托管,那么IIS就无法正确的运行.svc里的代码;因此需要再重装一次。

解决:
运行cmd,输入:
C:\Windows\Microsoft.NET\Framework\V4.0.30319\aspnet_regiis -i 来冲洗安装framework. 这样就可以解决问题.
WCF 部署到IIS 上

为什么建议先安装IIS,后安装vs?

因为在安装VS的时候,安装程序会自动检测计算机上是否安装IIS,若有,则将.NET的当前版本注册到IIS,比如安装VS2010,VS2010自带的.NET版本是4.0,安装程序就会对IIS进行一些配置:包括建立映射关系,添加账户等。所谓建立映射关系通俗的说就是,当你将发布好的程序部署到IIS上时,IIS会检查程序的.NET版本,如果是4.0,IIS就会在已经注册好的版本信息里寻找4.0版本的处理程序,如果没有注册,就无法处理你的程序,就会报错。
所以,如果先安装VS,再安装IIS,.NET的版本信息就没有注册到IIS里,所以此时需要我们手工注册。如果不注册,就会出现缺少映射或者处理程序的错误。

IIS 经典模式和集成模式区别总:

处理请求方式:
集成模式:
服务器将使用 IIS 和 ASP.NET 的集成请求处理管道来处理请求。集成的好处是,不再通过ISAPI的方式,提高了速度和稳定性。

经典模式:
服务器会继续通过 Aspnet_isapi.dll 路由托管代码请求,其处理请求的方式就像应用程序在 IIS 6.0 中运行一样。经典模式中,IIS拥有自身的管道,这些管道可以通过创建一个ISAPI扩展进行扩充,而ISAPI扩展是以难以开发而著称的。

总结:
遇到问题不能畏惧,有时候只是知道怎么解决是不行的,因为下次还会遇到同样的问题,要知道是什么原因引起的这个问题,并且在自己查的过程中不能看到解决方案就用上,要想为什么这样解决?在查的过程中也是一个学习的过程,会发现很多以前从未见过的世界,下次遇到同样的问题才有方向,加油!