2009-08-03 129 views
4

我在本地机器上创建了一个WCF服务。我的本地机器使用Windows 7 RC1,因此Web服务器是IIS 7.但是,我的生产机器是使用IIS 6的Windows Server 2003.WCF - IIS 6与IIS 7

当我尝试在本地环境中引用服务时,一切正常。但是,当我将我的服务推广到我的生产机器并尝试引用该服务时,我收到错误消息。错误说:

Error: Cannot obtain Metadata from http://www.thedomain.com/theService.svc?wsdl

If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address. For help enabling metadata publishing, please refer to the MSDN documentation at http://go.microsoft.com/fwlink/?LinkId=65455 .

WS-Metadata Exchange Error URI: http://www.thedomain.com/theService.svc?wsdl

Metadata contains a reference that cannot be resolved: ' http://www.thedomain.com/theService.svc?wsdl '.

Content Type application/soap+xml; charset=utf-8 was not supported by service http://www.mydomain.com/myService.svc?wsdl . The client and service bindings may be mismatched.

The remote server returned an error: (415) Cannot process the message because the content type 'application/soap+xml; charset=utf-8' was not the expected type 'text/xml; charset=utf-8'..

有什么我需要做的IIS 6中获得WCF服务的工作?我很困惑,为什么它在当地很好地工作,但在生产中不好。

谢谢!

回答

3

有4种可能性,我能想到的:

  • 一些安全设置,阻止访问该服务。检查你的IIS日志访问被拒绝
  • 的服务web.config中的配置尚未转移到生产
  • 即元数据交换不与HTTP GET允许
  • 您正在使用一个新的绑定是配置不支持IIS 6

IIS 6支持的绑定是basicHttpBinding和wsHttpBinding。请参阅:

http://msdn.microsoft.com/en-us/library/cc949086.aspx

希望这有助于

2

你已经锁定了两个环境之间的明显区别 - 一个运行IIS 6,另一个运行IIS 7.这可能是不同的,但不是导致问题的差异。

您是否比较了两种环境下的web.config文件?

从错误消息来看,它看起来像WCF在生产机器上运行,但是获取元数据存在问题。您是否尝试过在生产中运行服务?即使元数据检索不起作用,运行它也是可能的。


另外,如果你不介意我在这里得到一点哲学,你刚刚找到了登台服务器的原因。事实是,“1”和“2”之间的差别比“2”和“3”之间的差别要大得多。从开发环境直接转到生产环境,您首次遇到了“多种环境”问题。这与单数和复数的区别是相似的。

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

在中间添加分段系统可以让您提前将所有这些问题排除在外,因此,当您从分段生产转移到生产时,您可能仍然存在“差异”问题,但你不会再遇到“单数还是复数”的问题 - 你已经解决了它们。

+0

谢谢您的输入。不幸的是,我真的需要获取服务的元数据。 关于分段/生产服务器的争论。目前,我的分段和生产服务器是同一台机器。我在两种环境之间使用不同的IP地址。我只是说“生产”服务器来区分我的环境。 – user70192 2009-08-03 14:24:16

+0

我没有提供任何建议你不应该得到的元数据。你的“分期”环境中是否有同样的问题? – 2009-08-03 14:30:44