经过上一篇文章的操作,已经有一个能在本地发布的wcf服务,如果是开发阶段的调试,那么就已经满足我们的需求,在客户端可以添加服务会自动发现本地上已经启动的wcf服务。如图所示
你会发现ip是localhost,此服务是本机默认的iis工具发布的svc文件的wcf服务。
那么如果我想把WCF服务部署的到另外一个机器上应该怎么操作?
那如果是产品上线 要部署 服务器上 那情况就会复杂的多了,以下几点是必须要做的,如果有遗漏的欢迎补充。
1.首先要要讲wcf类库发布。
2.要部署的服务器 确保已经有.NetFrameWork 3.0+
3.安装iis6.0+
切记 一点要先安装 NetFrameWork 在安装iis 不然会报错
4.配置wcf站点ip和端口,如果服务是局域网内 那么选择服务器的静态ip就可以,端口不要重复而且不能有限制,能保证客户端能访问
!!!如果是外网服务器,那么ip就不需要设置,这一点很重要,
5.WCF站点下加一个跨域文件clientaccesspolicy.xml,保证wcf服务于客户端不在一个机器也能访问 不然也会报错
文件内容
然后在客户端的浏览器上输入地址svc文件的地址。如果正常会显示
2015/9/15 13:14aspnet_client 2016/4/21 14:58 bin 2015/9/15 12:57 340 clientaccesspolicy.xml 2015/9/15 14:36 126 Service1.svc 2016/4/21 14:58 2217 Web.config
如果出现HTTP 错误 404.17 - Not Found。这是会经常遇到的错误。
第一种可能是没有装wcf或者一般是在安装 Windows Communication Foundation (WCF) 之后安装了 IIS造成的
解决方法,以管理员身份进入命令行模式,运行:
"%WINDIR%\Microsoft.Net\Framework\v4.0.30319\aspnet_regiis" –i –enable
"%WINDIR%\Microsoft.Net\Framework\v4.0.30319\ServiceModelReg.exe" -r -y
-r - 重新安装此版本的 Windows Communication Foundation,
并更新 IIS 元数据库根处的脚本映射和根以下的所有
脚本映射。无论原始版本是什么,都将现有的脚本映射
升级到此版本。
-y - 在卸载或重新安装组件之前不要求确认。
一般是在安装 Windows Communication Foundation (WCF) 之后安装了 IIS造成, 运行以上命令将在 IIS 中注册所需的脚本映射。
此命令如果的目的是在所在的.netframework 路径下找到ServiceModelReg.exe 千万不要一样的copy 先在自己的电脑上找到相应的路径
例如我的电脑 是 .netframework4.0319的 那么就要用这个
如果完成以上操作 还是有错误,那就是没有正确配置 svc 文件类型已在 IIS 7.0 中正确映射解决办法:
1.打开命令提示符窗口并键入 start inetmgr,以打开 Internet 信息服务 (IIS) MMC 管理单元。 2.在左侧窗格中,展开包含计算机名称的节点,然后展开“网站”节点,然后选择“默认网站”。 3.在“功能视图”中双击“处理程序映射”。 4.在应用程序映射列表中验证 .svc 文件是否已映射到 aspnet_isapi.dll。如果尚未映射该文件: (1). 单击“添加托管处理程序”。 (2). 在“请求路径:”中键入 *.svc。 (3). 在“类型”文本框中键入 System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089。 (4). 在“名称:”文本框中键入 svc-Integrated。 5. 单击“确定”。 6. 单击“添加脚本映射”。 7. 在“请求路径:”中键入 *.svc。 8. 在“可执行文件:”文本框中键入 %SystemRoot%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll。 9. 在“名称:”文本框中键入 svc-ISAPI-2.0。 10. 使用“上移/下移”控件,确保托管处理程序 (svc-Integrated) 在列表中出现在 aspnet_isapi (svc-ISAPI-2.0) 处理程序之前。 11. 单击“确定”。
现在浏览器输入设置的ip:端口+svc文件名称 就不会出现错误了 我的是局域网本机服务器部署 以上wcf外部部署的时候通常会遇到的问题的总结,本文章还会持续补充,如果有问题欢迎交流