代码改变世界

WCF发布到IIS7问题的解决方案<转载>

2012-04-25 15:31  贼寇在何方  阅读(...)  评论(... 编辑 收藏

贼寇我还是比较喜欢原创,不太愿意转载,但常常遇到能够解决问题的精品文章,很有收藏的价值,那就转了吧...

之前也发过WCF服务,但这回还是遇到了困难。受下文的指点,顺利解决问题。

原文链接:WCF发布到IIS7问题的解决方案

 

今天用VS2010开发了一个WCF服务进行一个简单测试,没想到这点小事竟然折腾了我2个小时。

为避免其他兄弟遇到相同的问题少走弯路做一下总结。

操作系统:Windows7 旗舰版

开发环境:VS2010 .NET Framework4.0 ASP.NET4.0

第一步:检查Windows7中IIS是否安装了必要的组件

方法:控制面板->程序和功能->打开或关闭Windows功能

以下图片中标注的功能Windows7默认不会安装的

 

第二步:检查IIS的配置

系统必备安装完成后打开IIS服务管理器,点默认网站,双击“处理程序映射”如下图

 检查一下下图中红色标注部分是否已经存在,否则WCF服务是无法调用的。不幸如果没有找到这几个"兄弟"的话方法如下

安装注册WCF组件

WCF没有正确的在IIS中注册也许是导致看到错误页面的最常见原因。如果你在安装Visual Studio后才安装IIS, 那么你在IIS托管WCF服务中,就很可能遇到这样的问题。打开Visual Studio命令行提示工具(开始->所有程序->Visual Studio 2010->Visual Studio Tools->Visual Studio 命令提示, 如果你的OS是Windows Vista 、Windows7及以后的版本,你需要以管理员身份打开),运行” ServiceModelReg.exe –ia”。 命令完成后再看看

然后配置一下应用程序池.NET Framework的版本为4.0默认为2.0

可能出现的错误无法识别的属性“targetFramework”。

 最后说说VS2010中WCF的发布遇到的问题

1.选择WCF项目右键选择发布在下图设置对话框中注意红色标注文本框的填写方法

如果直接发布到名为"Service"(这个根据要求自行定义名称)的网站不需要填写/Service前面的部分只需要填写Service

如果要发布到默认网站上需要在前面填写Default Web sit/Service 有空格.而且Service目录已建立。系统提示的什么“默认网站/MyApp”是扯淡的,如果你觉得名称太长,可在IIS管理器中重命名默认网站的名称。

常出现的问题是无法找到Service站点

 

发布成功后可能出现的问题

出现这个问题"svc-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”

打开Visual Studio命令行提示工具(开始->所有程序->Visual Studio 2010->Visual Studio Tools->Visual Studio 命令提示, 如果你的OS是Windows Vista或Windows7及以后的版本,你需要以管理员身份打开),运行”aspnet_regiis.exe -i”。在命令运行完成后重新尝试你的网站。

大功告成!