从jQuery调用简单的WCF服务 - 500内部服务器错误

时间:2012-10-13 15:51:34

标签: jquery asp.net ajax json wcf

在过去的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类型的接口。

明天会跟进。

1 个答案:

答案 0 :(得分:1)

使用WCFTestClient(.exe)测试方法并确认方法工作正常,否则会出现实际错误。

如果您的方法足够简单,WCFTestClient是在从应用程序代码开始使用它之前快速测试的方法。