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 特性,具体使用和带参使用 请查阅相关资料
Grass Mud Horse

浙公网安备 33010602011771号