实现支持AJAX的WCF服务 - 来自JQuery的调用没有响应

时间:2016-02-05 20:48:48

标签: c# jquery asp.net ajax wcf

我正在浏览MSDN上发布的一个我无法开始工作的示例。我在VS2015中有一个带有AJAX Enabled WCF服务的ASP Web Form项目。我点击了Cntrl-F5,它运行正常。我尝试在浏览器中输入URI并获得相应的响应。 :nth-of-type

然后我将一个启用Ajax的ScriptManager添加到Default.aspx设计视图中,然后右键单击“属性”#39;视图。我添加了我的服务名称:

enter image description here

这是服务本身:

namespace CandidateTest.Service{
[ServiceContract(Namespace = "CandidateTest.Service")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class eThorService
{
    public string button;
    [WebGet()]
    [OperationContract]
    public void getUpdate()
    {
        _Default def = new _Default();
        Console.WriteLine("WCF service working");
        def.RenderData(button);
    }
}

}

这是我的jquery脚本,我试图通过以下方式调用该服务:

$(function () {
//while ($('#eThorButton').text != "Stop") {
if ($('#eThorButton').click) {
    alert("APC2");
$.ajax({

    url: 'http://localhost:49620/Service/eThorService.svc/getUpdate',
    method: 'post',
    dataType: 'json',
    success: function(){
        alert("success");
    },
    error: function (err) {
        alert(err);
    } 
})
//delay(1000);
alert("Here");
} 


});

创建我的web.config服务的更改是默认的,我没有改变:

<system.serviceModel>
<services>
  <service name="CandidateTest.Service.eThorService">
    <endpoint address="" behaviorConfiguration="CandidateTest.Service.eThorServiceAspNetAjaxBehavior"
      binding="webHttpBinding" contract="CandidateTest.Service.eThorService" />
  </service>
</services>
<behaviors>
  <endpointBehaviors>
    <behavior name="CandidateTest.Service.eThorServiceAspNetAjaxBehavior">
      <enableWebScript />
    </behavior>
  </endpointBehaviors>
  <serviceBehaviors>
    <behavior name="">
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
  multipleSiteBindingsEnabled="true" />

结束点是空的,可能是个问题?

所以基本上这是我第一次尝试在WCF中创建一个支持AJAX的服务,而脚本并没有调用该服务。我添加的警报是为了查看我的脚本是否正在使用该服务而且似乎不是。

我已按照enter image description here上的示例进行操作 这是针对VS2012的,但我希望这不是问题所在。我需要做什么才能让我的脚本调用该服务?

修改

在Chrome的开发工具中检查脚本时,我收到两个错误 - enter link description here

很明显,我的脚本无法找到我的网络服务,尽管它似乎是正确的网址。

EDIT 我修复了脚本引用错误,但我的服务调用仍返回404

1 个答案:

答案 0 :(得分:1)

看起来您的页面没有对jQuery javascript文件的引用。

您的ajax调用正在使用POST动词,但您的服务是使用WebGet()属性设置的,这意味着您需要修改您的ajax调用以使用GET作为动词:

$.ajax({

    url: 'http://localhost:49620/Service/eThorService.svc/getUpdate',
    method: 'get',
    dataType: 'json',
    success: function(){
        alert("success");
    },
    error: function (err) {
        alert(err);
    } 
})