我在本地计算机上创建了一个WCF服务。我的本地计算机使用Windows 7 RC1,因此Web服务器是IIS 7.但是,我的生产计算机是使用IIS 6的Windows Server 2003。
当我尝试在本地环境中引用该服务时,一切正常。但是,当我将我的服务提升到生产机器并尝试引用该服务时,我收到错误。错误说:
错误:无法从中获取元数据 http://www.thedomain.com/theService.svc?wsdl
如果这是Windows(R)通信 您拥有的基础服务 访问,请检查您有 启用了元数据发布 指定地址。帮助启用 元数据发布,请参阅 MSDN文档在 http://go.microsoft.com/fwlink/?LinkId=65455
WS-Metadata Exchange错误URI: http://www.thedomain.com/theService.svc?wsdl
元数据包含一个引用 无法解决: 'http://www.thedomain.com/theService.svc?wsdl'。
内容类型application / soap + xml; charset = utf-8不受支持 服务 http://www.mydomain.com/myService.svc?wsdl。 客户端和服务绑定可能是 不匹配。
远程服务器返回错误: (415)无法处理消息 因为内容类型 “应用程序/肥皂+ xml的;字符集= UTF-8' 不是预期的类型'text / xml; 字符集= UTF-8' ..
在IIS 6中是否需要执行某些操作才能使WCF服务正常工作?我真的很困惑为什么它在当地运作良好,但在生产中效果不佳。
谢谢!
答案 0 :(得分:3)
我可以想到4种可能性:
IIS 6支持的绑定是basicHttpBinding和wsHttpBinding。参见:
http://msdn.microsoft.com/en-us/library/cc949086.aspx
希望这有帮助
答案 1 :(得分:2)
您已经锁定了两个环境之间的明显区别 - 一个运行IIS 6,另一个运行IIS 7.这可能有所不同,但不是造成问题的区别。
您是否比较了两种环境中的web.config文件?
从错误消息判断,看起来WCF正在生产机器上运行,但是获取元数据存在问题。您是否尝试过在生产中运行该服务?即使元数据检索不起作用,运行它也可能有效。
另外,如果你不介意我在这里获得一点点哲学,你刚刚找到了升级服务器的原因。事实是“1”和“2”之间的差异远大于“2”和“3”之间的差异。从开发环境直接转向生产,您第一次遇到“多环境”的问题。这类似于单数和复数之间的差异。
您第一次遇到“不同环境”的问题。这类似于“同一个”和“不同的”之间的区别。
在中间添加一个临时系统让你有机会提前解决所有这些问题,这样当你从升级转到生产时,你可能仍然会遇到“差异”的问题,但是你不会再出现“奇异与复数”的问题 - 你已经解决了它们。