WCF新手问题:从JavaScript调用方法

问候!

我是WCF的新手,我认为它类似于ASP.NET Web服务,但我无法从客户端JavaScript调用方法。 我的网络表单如下所示:

我的服务界面如下所示:

 namespace Test { [ServiceContract(Namespace = "Test")] public interface IMyService { [OperationContract] void DoWork(); [OperationContract] string SayHi(); } } 

这是它的实现:

 namespace Test { [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class MyService : IMyService { public void DoWork() { } public string SayHi() { return "Hello, World!"; } } } 

最后是JavaScript:

 function test() { Test.MyService.SayHi(SayHiSuccess, SayHiError); } function SayHiSuccess(result) { alert(result[0]); } function SayHiError(error) { alert(error.toString()); } 

似乎服务的SayHi()方法永远不会执行,虽然我不确定为什么或如何进行故障排除。 有什么建议?

您没有发布您的web.config内容。 你使用什么绑定? 你可能应该使用webHttpBinding

此外,它可能有助于了解您的.svc文件内容。 虽然我从未尝试过,但我知道如果您使用WebScriptServiceHostFactory作为服务主机工厂,则根本不需要修改web.config。 这就像修改.svc文件一样简单,如下所示:

 <%@ ServiceHost Service="MyService" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" %> 

如果一切都失败了,这里有一些资源给你:

  • 从Javascript调用WCF服务
  • 创建一个简单的WCF Web …

你的代码看起来不错。 应该是正确的。 您也可以尝试添加WebService和WebMethod属性。

为了调试WCF Web服务,我通常使用Fiddler来跟踪HTTP调用,同时运行附加了调试器的WCF代码(在大多数情况下在Visual Studio中运行)。