从Jquery和服务引用中调用WCF服务

时间:2013-09-05 09:15:59

标签: wcf jquery

我的要求是能够从Jquery Ajax调用简单的WCF服务,也可以添加服务引用。

这很容易在asmx服务中完成,我真的很难看到当这个简单的任务变得如此困难和复杂时,WCF如何“更好”和“更强大”。

我遵循了各种教程,例如:

http://www.codeproject.com/Articles/132809/Calling-WCF-Services-using-jQuery http://www.codeproject.com/Articles/540169/CallingplusWCFplusServicespluswithplusjQuery-e2-80 http://blog.thomaslebrun.net/2011/11/jquery-calling-a-wcf-service-from-jquery/#.UihK6saa5No

但是我总是得到一个解决方案,我可以通过ServiceReference调用但不是Jquery,反之亦然。

对于以下简单的服务,任何人都可以请我提供:

  • 装饰服务和界面的必要属性
  • 带有所有绑定/端点/行为/等的Web.config ServiceModel部分

以便于从Jquery(ajax)调用WCF服务并在.net项目中添加服务引用?

或者我应该回到古老的简单(但显然不那么强大)amsx?

1 个答案:

答案 0 :(得分:0)

我已经使用webhttpbinding从javascript调用WCF服务。

的Web.config:

<system.serviceModel>
<services>
  <service name="WCF.TestWCF" behaviorConfiguration="TestWCFBehaviour">
    <endpoint address="" binding="webHttpBinding" contract="WCF.ITestWCF" behaviorConfiguration="TestWCFEndPointBehaviour"></endpoint>
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="TestWCFBehaviour">
      <serviceMetadata httpGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
  </serviceBehaviors>
  <endpointBehaviors>
    <behavior name="TestWCFEndPointBehaviour">
      <enableWebScript/>
      <webHttp/>
    </behavior>
  </endpointBehaviors>
</behaviors>

服务:

namespace WCF{
[ServiceContract(Namespace = "Saranya")]  
public interface ITestWCF
{
    [OperationContract]
    [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Xml)]
    String HelloWorld();  
}}   



namespace WCF{
[AspNetCompatibilityRequirements(RequirementsMode =
    AspNetCompatibilityRequirementsMode.Allowed)]
public class TestWCF:ITestWCF
{
    public String HelloWorld()
    {                                  
        return "Hello World!!";
    }      
}



    Using Jquery:


 $.post("http://localhost:26850/Service1.svc/HelloWorld?", null, fnsuccesscallback, "xml");
 function fnsuccesscallback(data) {
                    alert(data.xml);          

    }

使用服务参考:

 obj = new Saranya.ITestWCF();
                    obj.HelloWorld(fnsuccesscallback);
 function fnsuccesscallback(data) {
                    alert(data.xml);

                }