在过去的 4 个小时里,我一直在查看我能找到的关于这个问题的任何帖子,所以我现在可能有点盲目 ;-)
我正在尝试使用 jQuery 调用一个简单的 WCF 服务。我已经使用 WebMethods 一段时间了,我正在尝试迁移一些。我正在尝试使用您可以想象的最简单的网络服务进行测试:
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class ForumOperationService : IForumOperationService
{
public string Horse(string prefixText, int count)
{
return "hestWCF";
}
}
我的 jQuery 调用:
$(document).ready(function () {
var hest;
$.ajax({
type: "POST",
datatype: "application/json",
url: "Services/ForumOperationService.svc/Horse",
data: { prefixText: 'a', count: 10 },
success: function (data) {
hest = data;
}
});
});
我的 web.config 是这样的:
<system.webServer>
<behaviors>
<endpointBehaviors>
<behavior name="ServiceAspNetAjaxBehavior">
<enableWebScript />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<services>
<service name="ForumOperationService">
<endpoint address="" behaviorConfiguration="ServiceAspNetAjaxBehavior"
binding="webHttpBinding" contract="IForumOperationService" />
</service>
</services>
.... (more stuff)
在 Firebug 中,我收到以下错误:
NetworkError:500 内部服务器错误 -
http://localhost:21599/Client/Services/ForumOperationService.svc/Horse
有任何想法吗?
更新:
刚刚运行 WCF 测试客户端,得到了这个错误:
ForumOperationService 类型的服务类既定义了一个ServiceContract,又从IForumOperationService 类型继承了一个ServiceContract。契约继承只能在接口类型之间使用。ÿ 如果一个类用 ServiceContractAttribute 标记,它必须是层次结构中唯一具有 ServiceContractAttribute 的类型。ÿ考虑将 IForumOperationService 类型上的 ServiceContractAttribute 移动到 IForumOperationService 类型实现的单独接口。
明天会跟进。