c# - WCF新手问题: Calling Methods from JavaScript

标签 c# asp.net javascript wcf

您好!

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

<form id="form1" runat="server">
   <div>
      <asp:ScriptManager ID="ScriptManager1" runat="server">
         <Scripts>
            <asp:ScriptReference Path="~/test.js" />
         </Scripts>
         <Services>
            <asp:ServiceReference Path="~/MyService.svc" />
         </Services>
      </asp:ScriptManager>
   </div>
   <button onclick="test()">Click Me</button>
</form>

我的服务界面如下所示:

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 内容。你用的是什么绑定(bind)?您可能应该使用 webHttpBinding .

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

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

如果一切都失败了,这里有一些资源供您使用:

关于c# - WCF新手问题: Calling Methods from JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/712238/

相关文章:

c# - 从供应商的 Global.asax 继承 Global.asax 时,Application_Start 不会触发

c# - 如何在MVC4中创建上下文类

c# - 如何保存/加载进度?

javascript - 如何向特定用户提供包含特定元素的index.html?

javascript - 谷歌地图 : How to add shadow to custom marker?

javascript - undefined 不是函数(评估 '_this4.changeVisibilityFilterModal(true))

c# - 大量客户端和大量数据的 WCF 怎么样?

javascript - 为 window.open 传递一个长查询字符串

javascript - 取消选中一个复选框时如何取消选中以下所有复选框

c# - 重定向而不回发