【问题标题】:WCF - IIS 6 vs. IIS 7WCF - IIS 6 与 IIS 7
【发布时间】:2009-08-03 12:55:48
【问题描述】:

我在本地计算机上创建了 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-元数据交换错误 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; charset=utf-8'..

我需要在 IIS 6 中做些什么才能让 WCF 服务正常工作吗?我真的很困惑为什么它在本地运行良好,但在生产中却不行。

谢谢!

【问题讨论】:

    标签: wcf iis-7 iis-6


    【解决方案1】:

    我能想到四种可能:

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

    IIS 6 支持的绑定是 basicHttpBinding 和 wsHttpBinding。见:

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

    希望对你有帮助

    【讨论】:

    • 您知道在 IIS 6 上显示(或不允许)哪些绑定的列表吗?谢谢!
    【解决方案2】:

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

    你对比过两种环境下的 web.config 文件吗?

    从错误信息来看,WCF 似乎在生产机器上运行,但获取元数据时出现问题。您是否尝试过在生产环境中运行该服务?即使元数据检索不起作用,运行它也可能会起作用。


    另外,如果您不介意我在这里有点哲学,您已经找到了暂存服务器的原因。事实上,“1”和“2”之间的差异比“2”和“3”之间的差异要大得多。从开发环境直接转移到生产环境,您第一次遇到“多环境”问题。这类似于单复数的区别。

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

    在中间添加一个暂存系统让您有机会提前解决所有这些问题,这样当您从暂存转移到生产时,您可能仍然会遇到“差异”的问题,但您不会再有“单数与复数”的问题——你已经解决了。

    【讨论】:

    • 感谢您的意见。不幸的是,我真的需要获取服务的元数据。关于登台/生产服务器辩论。此时,我的登台和生产服务器是同一台机器。我在两个环境之间使用不同的 IP 地址。我只是说“生产”服务器来区分我的环境。
    • 我没说什么建议您不要获取元数据。您在“暂存”环境中是否有同样的问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    相关资源
    最近更新 更多