如果第一次在IIS7.5部署WCF服务文件---.svc的时候,你很有可能会遇到下面的问题:
404–NotFound-Thepageyouarerequestingcannotbeservedbecauseoftheextensionoftheconfiguration.Ifthepageisascript,addahandler.Ifthefileshouldbedownloaded,addaMIMEmap.
解决方案:
404,很熟悉吧。就是没找到文件。
其实,这问题很简单,发生错误的主要原因是HTTPHandler默认配置中的虚拟目录并没有映射(mapping)到以.svc为后缀的文件名。svc我们都知道在WCF机制中的重要性。既然目录都找不到,当然就会报错的哦!~。
步骤:
第一步:打开命令提示框。也就是cmd。
第二步:在黑屏窗口中,通过cd导航到一下目录:
C:\Windows\Microsoft.Net\Framework\v3.0\WindowsCommunicationFoundation
第三步:然后输入:
ServiceModelReg–i如图
这样就OK了。
我们都知道,在IIS7.0中,默认情况下有以下3中验证方式:
Anonymous(匿名,默认情况下打开)
Impersonation(模拟身份,默认情况关闭)
Forms(默契情况下关闭)
如图:
可能有些童鞋会觉得,不对啊,好像上面还缺少一种。对,缺少的就是“WindowsAuthentication”这个验证方式。那么,有些人就会问,是没有了呢?还是被路人甲给隐藏了呢?
呵呵,其实是隐藏的!~~微软这孩子已经把它不作为默认出现了。如果你真的需要这种验证方式,那么可以如下这么做:
打开控制面板(ControlPanel),然后找到“ProgramsandFeatures”,在点击“TurnWindowsFeatureson/off“,如下:
然后。。。
勾选上就可以了~~~~
这种情况主要发生在运用WindowsCredentials访问数据库时。宿主服务器(HostServer)有sql2008数据库以及有HTTP请求经过路由(routed)。
基于这种情况的主要是因为改变这个Classic.NETApplication的进程属性标识,所以如果碰到这个情况,那么你需要把你的虚拟目录映射(mapped)Classic.NETApplication中就可以了。
过程如下:
第一步:打开你的IIS管理器(我很喜欢直接在“开始”→“运行”里敲入inetmgr,然后打开,觉得很酷!~嘻嘻。)
第二步:在IIS管理器里,选择“ApplicationPools(应用程序池)”,在右边的列表里,选择“Class.NETAppPools”
第三步:打开它的“AdvancedSetting(高级设置)”。把ProcessModel下面的Identity属性改为LocalSystem,如下图:
为什么会发生这样的错误呢?这个很大程度上是因为和托管的管道模式(ManagedPipelineMode)设置有关系.
这个主要有2个解决方案:
第一个:改变你虚拟目录映射的ApplicationPool(应用程序池)的ManagedPipeline模式。默认情况下,你虚拟目录将映射到DefaultAppPool下的IntegratedManagedPipeline模式。OK,我们需要把它从Integrated到Classic模式就行了。
方法2:为你的虚拟目录创建一个新的Application
在你的网页目录下,右键,添加一个“Application”,如下:
在AplicationPool下面选择Classic.NetAppPool就可以了。。。