原创

WCF部署IIS所遇到的问题 (解决404.17、.svc无法读取问题)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/anbailong/article/details/51220821

    经过上一篇文章的操作,已经有一个能在本地发布的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服务于客户端不在一个机器也能访问 不然也会报错

文件内容

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="*">
        <domain uri="*"/>
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

然后在客户端的浏览器上输入地址svc文件的地址。如果正常会显示

 2015/9/15    13:14        <dir> aspnet_client
 2016/4/21    14:58        <dir> 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外部部署的时候通常会遇到的问题的总结,本文章还会持续补充,如果有问题欢迎交流




文章最后发布于: 2016-04-22 15:47:23
展开阅读全文
0 个人打赏

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览