ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

CodeGo.net> WCF新手问题:从JavaScript调用方法

2019-12-10 18:35:34  阅读:289  来源: 互联网

标签:wcf asp-net javascript c


问候!

我是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内容.您正在使用什么绑定?您可能应该使用webHttpBinding.

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

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

如果所有其他方法都失败,那么这里有一些资源可供您使用:

> Calling WCF Service from Javascript
> Create a Simple WCF Web…

标签:wcf,asp-net,javascript,c
来源: https://codeday.me/bug/20191210/2103304.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有