在过去的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并从类型继承ServiceContract IForumOperationService。合同继承只能用于 界面类型。 ÿ如果一个类标有ServiceContractAttribute, 它必须是层次结构中唯一的类型 ServiceContractAttribute的。 ÿ考虑移动 ServiceContractAttribute类型IForumOperationService到一个单独的 IForumOperationService类型的接口。
明天会跟进。
答案 0 :(得分:1)
使用WCFTestClient(.exe)测试方法并确认方法工作正常,否则会出现实际错误。
如果您的方法足够简单,WCFTestClient是在从应用程序代码开始使用它之前快速测试的方法。