手动配置WCF宿主的.config文件遇到的几种错误  
今天尝试用控制台应用程序作为WCF宿主,遇到几个问题,这几个问题虽然都不难,但寻找解决方案相当费时费力,做记录。 
 
WCF标准的配置文件为:
 
<system.serviceModel>
        <services>
            <service name="Microsoft.ServiceModel.Samples.CalculatorService" behaviorConfiguration="CalculatorServiceBehavior">
                <!-- Service Endpoints -->
        <!-- This endpoint is exposed at the base address provided by the host : http://localhost:1808/Service.svc-->
                <endpoint address="" binding="wsHttpBinding" contract="Microsoft.ServiceModel.Samples.ICalculator">
                    <!-- 
              部署时,应删除或替换下列标识元素,以反映
              在其下运行部署服务的标识。删除之后,WCF 将
              自动推导相应标识。
          -->
                    <identity>
                        <dns value="localhost"/>
                    </identity>
                </endpoint>
        <!-- This mex endpoint is exposed at the base address provided by the host : http://localhost:1808/Service.svc/mex-->
                <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
            </service>
        </services>
        <behaviors>
            <serviceBehaviors>
                <behavior name="CalculatorServiceBehavior">
                    <!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false 并删除上面的元数据终结点-->
                    <serviceMetadata httpGetEnabled="true"/>
                    <!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息-->
                    <serviceDebug includeExceptionDetailInFaults="false"/>
                </behavior>
            </serviceBehaviors>
        </behaviors>
    </system.serviceModel>
 
 
 
遇到问题:
 
1.“服务XXXXX有零个应用程序(非基础结构)终结点”。
 
  这是因为<service name="Microsoft.ServiceModel.Samples.CalculatorService" behaviorConfiguration="CalculatorServiceBehavior">的name属性没有对应到正确的名称。 
 
在上面的例子中使用的是Microsoft.ServiceModel.Samples命名空间下的CalculatorService类,如果命名空间命或类名写错,或者写的不完全(比如只写了命名空间名字或者类名),则会出现上述错误。
 
2.WCF服务发布以后,Client 端无法引用WCF服务,查看错误为“application soap+xml charset utf-8 客户端和服务绑定可能不匹配”。或者使用IE访问WCF服务地址的时候显示“当前已禁用此服务元数据的发布”。
 
  按着《ASP.NET 3.5高级程序设计(第4版)》中的WCF案例一步步进行,书上说为了使初学者更好的关注WCF细节,先不使用WCF模版,但是进行到最后报出上述错误。书上写的配置是不包含<behaviors>节点的,这时Client 端无法正常连接服务,于是在网上各种找解决方法,在http://www.cnblogs.com/lanpei/archive/2009/10/29/1592218.html上找到累死问题解决方法,于是加上<behaviors>节点,此时仍然会报相同错误。因为书上的例子中没有<behaviors>节点,所以<service>节点中也不包含behaviorConfiguration属性,设置好behaviorConfiguration="CalculatorServiceBehavior",彻底没问题了。
 
 3.使用NetTcpBinding绑定WCF服务,Client端引无法引用WCF服务,查看错误为“元数据包含无法解析的引用”。
 
  刚开始加了各种节点都不好使,后来查MSDN,下载了一个NetTcpBinding的案例仔细对比才发现是<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>中的contract="IMetadataExchange"写错了,本以为这个属性应该与<endpoint address="" binding="wsHttpBinding" contract="Microsoft.ServiceModel.Samples.ICalculator">中的contract相同,后来发现理解错误,在使用http绑定的时候写错好像无所谓,但是使用NetTcpBinding的时候,必须是IMetadataExchange,暂时还不太理解为什么。
 
 4.使用NetTcpBinding绑定WCF服务,本机Client 端可以正常访问,但跨机器访问时提示错误“net.tcp://XXXXXX不支持请求的升级。这可能是由于不匹配的绑定”。
 
  这个问题很困扰,Google上查“不支持请求的升级”居然没有任何相关线索,后来忘了怎么找到解决办法的。该问题是因为服务端和客户端的安全设置不一致,也就是<security mode=""/>节点中的mode值不一致,设置成一致的(比如None,Transport)就没问题了。
 
 
 
个人觉得,的确像书上说的那样,不使用模板会关注WCF的一些细节,可以更好的理解WCF,之前直接用WCF模板做成类似WebService的服务,然后部署到IIS上,觉得很简单,根本没想过改变宿主或者安全性之类的问题。最近重新学习WCF才发现,要注意的东西还挺多。

手动配置WCF宿主的.config文件遇到的几种错误相关推荐

  1. [转]一次.NET Web应用程序安装包的制作经历:Sql数据库安装的3种方式 配置IIS及Web.Config文件...

    本文转自:http://www.cnblogs.com/moonspell/archive/2007/07/27/832433.html 原文如下: -----------   一次难得的安装包制作经 ...

  2. 认识Web.config文件

    Web.config文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中 ...

  3. WinForm读取指定的config文件的内容

    config文件的使用 一.缘起 最近做项目开始使用C#,因为以前一直使用的是C++,因此面向对象思想方面的知识还是比较全面的,反而是因没有经过完整.系统的.Net方面知识的系统学习,经常被一些在C# ...

  4. Config文件的使用:通过程序修改Config文件

    对于config文件,一般情况下都是使用ConfigurationManager加载,然后通过读取相应节点的值来获取想要的数据,但是,有时候需要修改config文件的值,这时候就用到了OpenExeC ...

  5. php连接db2失败,php – 通过pdo_ibm模块连接到db2手动配置的错误SQL10007N -5005

    我很难使用pdo_ibm连接到远程db2数据库,我按照IBM上的说明配置pdo_ibm库和 linux客户端但由于我的php没有手动配置但是通过apt-get安装我不确定当前的错误是否可能是由于配置错 ...

  6. linux中config文件怎么打开,CONFIG 文件扩展名: 它是什么以及如何打开它?

    CONFIG 疑难解答 打开 CONFIG 文件过程中所遇到的常见问题 Microsoft Notepad 不在 你尝试加载 CONFIG 文件并收到错误,例如 "%%os%% 无法打开 C ...

  7. wp config.php mysql_WordPress手动配置wp-config.php文件

    前不久在WordPress技术群里看到有人在安装网站程序的时候出现了系统不能自动配置wp-config.php文件的问题,那么这个时候就需要我们手动进行配置了. 问题描述: 如果自动创建未能成功,不用 ...

  8. promethues+alertmanager+grafana监控docker容器和报警—基于手动配置和文件自动发现—详细文档

    promethues+alertmanager+grafana监控docker容器和报警-基于手动配置和文件自动发现-详细文档 相关配套软件包网盘下载链接如下: 网盘地址: https://url28 ...

  9. 【Kubernetes 018】cfssl创建证书并结合RBAC的RoleBinding配置新用户config文件操作详解

    安全性是企业生产环境中的头等大事,对于访问同一集群的不同用户或者用户组来说,将权限分级是很有必要的.和很多云厂商一样,k8s也是采用按照角色和用户绑定的方式来分配权限的,这一节我们就来实际操作下,新建 ...

最新文章

  1. linux c select 服务器源码 简介
  2. ubuntu19.10安装haroopad软件
  3. TDMoverIP是什么?tdmoverip产品特性介绍
  4. PyCharm 安装插件
  5. opencv之waitKey()与waitKeyEx()的区别
  6. python深浅复制_python3 深浅拷贝(复制)
  7. html js把json转化为excel,json转换Excel
  8. Himawari8注册后发来信息下载数据
  9. PCB天线和陶瓷天线
  10. 2021春招美团算法笔试题
  11. word2003流程图变成图片_流程图怎么画word2003
  12. 唐青昊:Marvel Team 这一年 | 黑客 2016
  13. 修改上传资源积分c币教程指导
  14. Android面试你必须要知道的那些知识,已拿offer附真题解析
  15. php中哪些不能作为常量名,【单选题】下列选项中,不能作为常量值的是( )。A. php B. array(1,2,3) C. true D. 100...
  16. 网咖虚拟服务器主机,为什么网吧的主机这么便宜??但是玩大型游戏又不卡
  17. 用C语言对一元二次方程求解
  18. 基于SpringBoot生鲜商城
  19. 如何发布自己的npm包(超详细步骤,博主都在用)
  20. greenplum安装方法详解

热门文章

  1. css语言基础--css的选择符语法
  2. Windows 8最值得期待的8大特性
  3. 内存泄漏检测工具(转载)
  4. Struts2s:select/s:select
  5. NYOJ 248 BUYING FEED (贪心)
  6. 常用命令之------tcpdump
  7. noip2016 组合数问题
  8. Flume1.7.0的安装与使用
  9. 常见开发需求之前端利器webstorm中的git和快捷键
  10. Python的初级语法