龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

JQuery应用之使用AJAX调用WCF服务介绍

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
在网络上经常看到一些初学者提问怎么在AJAX中或用Javascript调用WCF服务,本文将简要给初学者介绍如何在AJAX中或用Javascript调用WCF服务以及注意事项。为了便于讲解,我们首先创建一个W

在网络上经常看到一些初学者提问怎么在AJAX中或用Javascript调用WCF服务,本文将简要给初学者介绍如何在AJAX中或用Javascript调用WCF服务以及注意事项。为了便于讲解,我们首先创建一个WCF服务,服务和服务数据定义如下:

    //数据契约
    [DataContract]
    public class Person
    {
        [DataMember]
        public int ID { get; set; }
        [DataMember]
        public string Name { get; set; }
    }

    //WCF服务,为了能使js调用,必须设置AspNetCompatibilityRequirements为Allowed或Required
    [ServiceContract(Namespace = "")]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class PersonService
    {
        //服务功能1
        [OperationContract]
        [WebGet]
        public Person GetOnePerson()
        {
            return new Person { ID = 1, Name = "cokkiy" };
        }

        //服务功能2
        [OperationContract]
        [WebGet]
        public List<Person> GetPorsons(int id, string name)
        {
            return new List<Person>() { new Person { ID=1,Name="cokkiy"}, 
                new Person { ID=id,Name=name} };
        }
    }

Ok,我们先看一下服务定义,为了使AJAX或JS调用服务,必须标记服务的AspNet兼容模式为Allowed或Required。其次,操作契约必须标记为WebGet或WebInvoke,WebGet属性标记了一个可以用http get方法调用的操作,而WebInvoke属性标记了一个可以用http post方法调用的操作。

再来看服务配置文件:

<system.serviceModel>
        <behaviors>
            <endpointBehaviors>
                <behavior name="AjaxWCFWeb.Services.PersonServiceAspNetAjaxBehavior">
                    <enableWebScript/>
                </behavior>
            </endpointBehaviors>
        </behaviors>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
        <services>
            <service name="AjaxWCFWeb.Services.PersonService">
                <endpoint address="" behaviorConfiguration="AjaxWCFWeb.Services.PersonServiceAspNetAjaxBehavior" binding="webHttpBinding" 
contract="AjaxWCFWeb.Services.PersonService"/> </service> </services> </system.serviceModel>

这里注意,配置文件中,必须提供基于webHttpBinding的绑定,否则就不能从js中调用。并且,必须设置serviceHostingEnvironment aspNetCompatibilityEnabled


精彩图集

赞助商链接