实现启用 AJAX 的 WCF 服务 - 来自 JQuery 的调用没有响应
Posted
技术标签:
【中文标题】实现启用 AJAX 的 WCF 服务 - 来自 JQuery 的调用没有响应【英文标题】:Implementing an AJAX enabled WCF Service - call from JQuery not responding 【发布时间】: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
【问题讨论】:
【参考方案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 访问我的服务。以上是关于实现启用 AJAX 的 WCF 服务 - 来自 JQuery 的调用没有响应的主要内容,如果未能解决你的问题,请参考以下文章
从 jQuery 调用启用 AJAX 的 WCF 服务 - MVC 2
从启用 AJAX 的 WCF 服务加载 Handsontable