1

我的要求是能够从 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?

4

1 回答 1

0

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

网络配置:

<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);

                }
于 2013-10-17T13:36:11.847 回答