Asp.net 从JQuery使用WCF服务

Asp.net 从JQuery使用WCF服务,asp.net,wcf,jquery,Asp.net,Wcf,Jquery,我正在尝试将WCF服务添加到我的web控件类项目中,并允许我的jquery客户端使用该服务。理想情况下,我希望在同一个项目中托管WCF服务,并允许自定义web控件(在同一个项目中)的jQuery方法使用该服务。我不确定我做错了什么,但我无法在jquery调用和服务之间建立连接。虽然没有错误,但我的服务从未达到断点。以下是我所做的: 右键单击project并选择Add 选择Web服务 这将创建三个文件:Service1.vb、app.config和IService1.vb 我将文件编辑为如下所示:

我正在尝试将WCF服务添加到我的web控件类项目中,并允许我的jquery客户端使用该服务。理想情况下,我希望在同一个项目中托管WCF服务,并允许自定义web控件(在同一个项目中)的jQuery方法使用该服务。我不确定我做错了什么,但我无法在jquery调用和服务之间建立连接。虽然没有错误,但我的服务从未达到断点。以下是我所做的:

  • 右键单击project并选择Add
  • 选择Web服务
  • 这将创建三个文件:Service1.vb、app.config和IService1.vb
  • 我将文件编辑为如下所示:
  • 服务1

    Public Class Service1
        Implements IService1
    
        Public Function getUsers(ByVal prefixText As String) As List(Of String) Implements IService1.getUsers
            Dim myList As New List(Of String)
            With myList
                .Add("Some String")
                .Add("Another String")
            End With
    
            Return myList
        End Function
    End Class
    
    Imports System.ServiceModel   
    
    <ServiceContract()>
    Public Interface IService1
    
        <OperationContract()> _
        Function getUsers(ByVal prefixText As String) As List(Of String)
    
    End Interface
    
    IService1

    Public Class Service1
        Implements IService1
    
        Public Function getUsers(ByVal prefixText As String) As List(Of String) Implements IService1.getUsers
            Dim myList As New List(Of String)
            With myList
                .Add("Some String")
                .Add("Another String")
            End With
    
            Return myList
        End Function
    End Class
    
    Imports System.ServiceModel   
    
    <ServiceContract()>
    Public Interface IService1
    
        <OperationContract()> _
        Function getUsers(ByVal prefixText As String) As List(Of String)
    
    End Interface
    
    正如我所说,我的getUsers函数的断点永远不会到达,jquery成功/失败警报也永远不会发出。如果有人能告诉我如何访问服务和/或如何在jQuery中提醒错误,我将不胜感激。我遗漏了app.config的内容,但如果有帮助的话,可以添加它


    谢谢

    这是您代码中的一个严重误解。默认情况下,WCF使用Soap,Javascript/Jquery不提供调用Soap服务的简单方法

    您应该使用WCF Web HTTP编程模型向非SOAP端点公开WCF服务操作,比如REST类服务(可以从JS调用)

    如果你使用的是WCF 4,这很简单

    服务合同

    <ServiceContract()>
    Public Interface IService1
    
        <OperationContract()>
        <WebInvoke(BodyStyle:=WebMessageBodyStyle.Bare, RequestFormat:=WebMessageFormat.Json, ResponseFormat:=WebMessageFormat.Json)>
        Function getUsers() As List(Of String)
    
    End Interface
    
    Service1.svc

    <%@ ServiceHost Language="VB" 
    Service="MvcApplication2.Service1" 
    CodeBehind="Service1.svc.vb" 
    Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>
    
    
    
    我不会在这里向你解释所有的事情,继续读下去


    还要注意的是,由于ASP.NET Web Api,WCF REST现在不太流行。我不认为WCF REST不受欢迎,但要在Web上公开某些内容,Web Api听起来是一个更好的解决方案。

    感谢您的回复。正如您所建议的,当我创建服务时,没有创建svc文件。这是我应该创建的文本文件并重命名吗?是的,但是在WCF新项目模板中,这个文件是自动调用Yok的,我想我得到了这个。两件事。首先,我看到您在Service1.SVC中有“Service=”mvcapapplication2.Service1“。我没有使用MVC(这是在服务器控件中)。它应该是服务的全名吗,即:com.jason.Service1?其次,我如何在jqeury中访问它?特别是在jQuery中?没问题。WCF与MVC或WebForms一起工作。您必须在Web编程模型中使用Http绑定才能在jQuery中调用它。脚本与您以前的脚本非常相同。请参阅我的链接。