最近由于功能的要求需要在局域网中别的机子也能访问本地的wcf服务。一个小小的东西折腾我快三个小时,为了防止别人也浪费那么长的时间,
我把我所遇到的问题和解决办法写出来。
一 安装IIS、
发布wcf服务首先要安装IIS服务,在win7下找个服务也特别的恶心 【开始】-【控制面板】-【程序】-【打开或关闭Windows功能】-【Internet信息服务】勾选上web管理工具,万维网服务,几分钟以后,IIS7就安装在你的OS上了。
二 发布网站、
发布网站首先要找到Internet信息服务(IIS)管理器。【开始】-【控制面板】-【系统和安全】-【管理工具】选择Internet信息服务(IIS)管理器快捷方式,(注:用命令行也可以进入,我不知道谁知道的给我说下)在网站下面添加要发布的站点。这个我就不说了,挺简单的做上几个月donnet开发的都知道,不知道的我也没有办法,自己百度下吧。添加以后对我来说,错误是各种各样的呀。
出现第一个错误
<compilation debug="true" targetFramework="4.0">
<assemblies>
</assemblies>
</compilation>
这是目标框架不对,在应用程序池中把要发布的站点的。net Framework版本改成V4.0就OK了
出现第二个错误
错误描述【由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序】,
这是未将 .svc 文件类型映射、 验证是否已将 svc 文件类型映射为可由 IIS 5.1 或 6.0 中的 aspnet_isapi.dll 处理
1、在“控制面板”中打开“计算机管理”。
2、展开“服务和应用程序”、“Internet 信息服务”。
3、右键单击“网站”并选择“属性”。
4、在“主目录”选项卡上单击“配置”。
5、在应用程序映射列表中验证 .svc 文件是否已映射到 aspnet_isapi.dll。如果尚未映射该文件:
6、单击“添加”。
7、在“添加/编辑应用程序扩展名映射”对话框中,单击“浏览”。
8、浏览到包含 aspnet_isapi.dll 的文件夹,然后单击“打开”。
9、指定 .svc 作为扩展名。
10、确保“检查文件是否存在”未选中。
11、单击“确定”,然后再次单击“确定”以返回到“网站属性”对话框。
12、单击“确定”关闭对话框。
下面是把svc文件类型添加到 IIS 7.0 中正确映射的方法
1、打开命令提示符窗口并键入 start inetmgr,以打开 Internet 信息服务 (IIS) MMC 管理单元。
2、在左侧窗格中,展开包含计算机名称的节点,然后展开“网站”节点,然后选择“默认网站”。
3、在“功能视图”中双击“处理程序映射”。
4、在应用程序映射列表中验证 .svc 文件是否已映射到 aspnet_isapi.dll。如果尚未映射该文件:
5、单击“添加管理处理程序”。
6、“请求路径:”中键入 *.svc。
7、在“类型”文本框中键入 System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089。
8、在“名称:”文本框中键入 svc-Integrated。单击“确定”。
9、单击“添加脚本映射”。在“请求路径:”中键入 *.svc。 在“可执行文件:”文本框中键入 %SystemRoot%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll。在“名称:”文本框中键入 svc-ISAPI-2.0。使用“上移/下移”控件,确保托管处理程序 (svc-Integrated) 在列表中出现在 aspnet_isapi (svc-ISAPI-2.0) 处理程序之前。 单击“确定”。
此内容参考http://msdn.microsoft.com/zh-cn/library/ms752252.aspx
出现第三个错误
HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容 本人是如下解决的
请确保配置了默认文档并且该文件存在。
使用 IIS 管理器启用目录浏览。
打开 IIS 管理器。
在“功能”视图中,双击“目录浏览”。
在“目录浏览”页上,在“操作”窗格中单击“启用”。
注:如果在安装 Windows Communication Foundation (WCF) 之后安装了 IIS,必须运行以下命令。在vs的开始目录中找到【Microsoft Visual Studio 2010】-【Visual Studio Tools】-Visual Studio 命令提示(2010)中输入 ServiceModelReg.exe" -r 就可以在本地的局域网访问本地的WCF服务了