WCF - IIS 6与IIS 7

时间:2009-08-03 12:55:49

标签: wcf iis-7 iis-6

我在本地计算机上创建了一个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服务正常工作?我真的很困惑为什么它在当地运作良好,但在生产中效果不佳。

谢谢!

2 个答案:

答案 0 :(得分:3)

我可以想到4种可能性:

  • 阻止访问服务的某些安全设置。检查IIS日志是否拒绝访问
  • 服务web.config的配置尚未转移到生产
  • 未使用http get allowed
  • 配置元数据交换
  • 您使用的是IIS 6不支持的新绑定

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”之间的差异。从开发环境直接转向生产,您第一次遇到“多环境”的问题。这类似于单数和复数之间的差异。

您第一次遇到“不同环境”的问题。这类似于“同一个”和“不同的”之间的区别。

在中间添加一个临时系统让你有机会提前解决所有这些问题,这样当你从升级转到生产时,你可能仍然会遇到“差异”的问题,但是你不会再出现“奇异与复数”的问题 - 你已经解决了它们。