WCF学习笔记(二):保留未命名的behavior节点
添加命名的behavior节点时,还需要保留一个未命名的或者默认的behavior节,否则会出现“。。。元数据包含无法解析的引用。。。”的错误。
昨天听完徐长龙老师关于WCF的Webcast以后,照着做了个demo,结果连WCF Test Client出错如下:
HTML 文档不包含 Web 服务发现信息。
元数据包含无法解析的引用:“http://localhost:59477/WCF-Service/Service.svc”。
服务 http://localhost:59477/WCF-Service/Service.svc 不支持内容类型 application/soap+xml; charset=utf-8。客户端和服务绑定可能不匹配。
远程服务器返回错误: (415) Unsupported Media Type。
如果该服务已在当前解决方案中定义,请尝试生成该解决方案,然后再次添加服务引用。
调查分析之后,我得出如下两点:
1、仔细对比徐老师的配置和我的配置,没有发现任何区别;
2、新建一个WCF Service Application没有问题,可以正常运行;
搜索谷歌的时候,有人提到service的属性中如果添加了behaviorConfiguration以后出错,而默认新建的项目没有设置这个属性。我试着从service节点中删除behaviorConfiguration属性,并且去掉behavior的命名之后,程序能正常运行:)由此,我很确定是这一块的问题。如果这就最终的答案——不用命名的behavior,那太令人失望了。
继续搜索,让我发现了博客园中的一篇文章“Silverlight调用WCF服务,在添加WCF服务引用时,报错如下:”,其中提到添加一个未命名的behavior节点。事实证明,这个方法很好的解决了我的问题。换句话说就是,在配置命名behavior节点的时候,必须保留原来未命名的behavior节点。这是一个“添加”命名节点的过程,不是修改未命名节点的过程。