AJAX与WCF交互

 

既然可以通过xmlhttprequest来请求web service ,那wcf应该也可以吧?

抱着这样的想法  没有参考任何资料直接敲上代码  结果却没有用

后来看了一下相关资料,原来要在实现服务的类上添加[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 如:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using System.ServiceModel.Activation;

// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、服务和配置文件中的类名“Service”。
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service : IService
{
    public string GetData(int value)
    {
        return string.Format("You entered: {0}", value);
    }

    public CompositeType GetDataUsingDataContract(CompositeType composite)
    {
        if (composite == null)
        {
            throw new ArgumentNullException("composite");
        }
        if (composite.BoolValue)
        {
            composite.StringValue += "Suffix";
        }
        return composite;
    }

    public string AjaxTest()
    {
        return "asdasasd";
    }
}


然后还必须在web.config里配置行为与绑定

绑定:webHttpBinding

行为:enableWebScript

 

  <system.serviceModel>
    <behaviors>
      <endpointBehaviors>
        <behavior name="ServiceAspNetAjaxBehavior">
          <enableWebScript /> <!--重点-->
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
      multipleSiteBindingsEnabled="true" />
    <services>
      <service name="Service">
        <endpoint address="" behaviorConfiguration="ServiceAspNetAjaxBehavior"
          binding="webHttpBinding" contract="Service" /><!--重点-->
      </service>
    </services>
  </system.serviceModel>

 

然后  服务函数上要加上[WebGet()] 特性  这样就可以使用Get方式访问了

如果要以其他方式访问  可以使用WebInvoke 特性,具体使用和带参使用  请查阅相关资料

 

 

posted @ 2013-05-27 23:07  韬韬韬你羞得无礼  Views(132)  Comments(0)    收藏  举报