【问题标题】:This service implements '2' contracts. InvalidOperationException该服务实施“2”合同。无效操作异常
【发布时间】:2012-05-22 11:32:44
【问题描述】:

我有一个 WCF 服务项目,我正在尝试在我的本地开发机器上启动和运行。

当我从在 Cassini 中运行的 IE8 中点击 .SVC 时,它没有问题。

当我从在 IIS 中运行的 IE8 中点击 .SVC 时,我收到以下服务器错误。

此服务实施“2”合同。要使用 WebScriptServiceHostFactory,您必须为每个服务实现一个协定。如果您必须使用多个合约,请使用常规的 ServiceHost。

我的 IIS 配置似乎有问题。我有一位同事在他的机器上通过 IIS 运行项目,我们已经检查并匹配了我们的 Windows 功能列表,以确保我们在 Windows 7 中安装了相同的 IIS 和 WWW 功能。

我还用 IIS 4.0 重新注册了 aspnet,但错误没有改变。

【问题讨论】:

  • 我下载了 IIS Express 以查看具有多个合同的服务是否会运行并且它们会运行!在这一点上,我完全不知道为什么服务在我的开发框中的 IIS 中运行时会引发上述错误。
  • 看来 IIS Express 解决方案只是一个权宜之计,因为截至今天早上,我的多个合同服务即使在 IIS Express 中也不再有效。所以现在我完全不知所措。我还在我办公室的其他机器上部署了服务项目,这些机器通过 IIS 7.5 将它们用作应用程序,并且这些其他机器正常工作,所以此时我无法解释为什么具有多个服务合同的服务不起作用在我的机器上。

标签: wcf contracts


【解决方案1】:

嗯,在 Cassini 中工作而不在 IIS7 中工作的一个原因是 Cassini 模拟 IIS6,并且在 IIS6 和 IIS7 之间对网站配置进行了大量更改。您绝对应该安装和使用 IIS Express 7.5 作为您的集成开发 Web 主机,而不是默认的 Cassini 浏览器。

现在,您检查了您的功能,但您检查了您的 IIS7 配置吗?您确定该站点在正确的 (.NET 4) 应用程序池中运行。您是否还确保它以正确的模式(集成)运行。

【讨论】:

  • 感谢您的快速回复。我确实检查了应用程序池和模式。我正在使用默认为集成模式的 ASP.NET 4.0 应用程序池。
  • 我终于安装了 IIS Express,它正在工作,所以我坚持使用它。我希望当我们最终部署到生产环境时不会看到同样的问题,但是现在我的超级用户同意 IIS Express 是合法的测试,所以我现在不需要让我安装的 IIS 工作。感谢您的帮助,我将其标记为答案。
猜你喜欢
  • 2010-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-06
  • 1970-01-01
相关资源
最近更新 更多