在此服务主机的已实施合同中未找到合同
Posted
技术标签:
【中文标题】在此服务主机的已实施合同中未找到合同【英文标题】:Contract was not found in the implemented contracts in this service host 【发布时间】:2012-04-07 09:32:49 【问题描述】:我收到了标题中提到的错误,但不确定我到底做错了什么。我在 openSUSE 上运行 Mono 2.10.6。仅当我尝试浏览 WCF 服务时才会出现此问题(网页加载正常)。
服务代码是:
namespace CyberLane
[ServiceContract]
public class DataServices// : IDataServices
[OperationContract]
public TweetDTO[] GetLatestTweets()
return MasterRepository.GetTweets().Select(x => new TweetDTO(x)).ToArray();
我的 Web.config 有以下内容:
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="CyberLane.DataServicesAspNetAjaxBehavior">
<enableWebScript />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<services>
<service name="CyberLane.DataServices">
<endpoint address="" behaviorConfiguration="CyberLane.DataServicesAspNetAjaxBehavior" binding="webHttpBinding" contract="CyberLane.DataServices" />
</service>
</services>
</system.serviceModel>
如果您需要更多信息,请询问我,我将非常乐意分享!这已经让我发疯了几个星期了。
【问题讨论】:
【参考方案1】:首先,最佳实践和常用方法是使用 ServiceModel 属性而不是实现它的类来装饰 IDataServices(接口)。
【讨论】:
我最初是这样的,但收到此错误“在此服务主机的已实施合同中找不到合同'CyberLane.IDataServices'”所以我在没有接口的情况下尝试了它并得到了相同的结果错误。 @JustinN:我建议回滚,我的意思是使用接口。这将避免额外的问题。还要确保您输入正确,WCF 在任何地方都区分大小写。 我已回滚,但仍然出现错误。我是否需要做其他事情才能让它将接口识别为属性以外的合同? @JustinN:WCF 程序集是 Web 应用程序外部的吗?如果是 - 你有没有引用它?确保在合同激活时加载。 都在同一个项目中。以上是关于在此服务主机的已实施合同中未找到合同的主要内容,如果未能解决你的问题,请参考以下文章
具有多个合同的 Mono WCF 休息服务“配置文件中未定义端点”