【问题标题】:Implementing an AJAX enabled WCF Service - call from JQuery not responding实现启用 AJAX 的 WCF 服务 - 来自 JQuery 的调用没有响应
【发布时间】:2016-05-15 23:10:55
【问题描述】:

我正在浏览 MSDN 上发布的一个示例,但我无法开始工作。我在 VS2015 中有一个带有 AJAX Enabled WCF 服务的 ASP Web 窗体项目。我已经点击了 Cntrl-F5,它工作正常。我尝试在浏览器中输入 URI 并得到适当的响应。

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

这是服务本身:

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 link description here 上的示例进行了操作 这适用于 VS2012,但我希望这不是问题。我需要做什么才能让我的脚本调用服务?

编辑

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

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

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

【问题讨论】:

    标签: c# jquery asp.net ajax wcf


    【解决方案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);
        } 
    })
    

    【讨论】:

    • 谢谢,现在添加了脚本参考。但是仍然有 404 访问我的服务。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    相关资源
    最近更新 更多