如何从jquery进行多个并行WCF服务调用

时间:2012-01-19 13:31:51

标签: wcf json jquery wcf-client

我必须通过使用jquery在指定的时间间隔后更新网页的不同区域来进行多个WCF服务调用。如果我对WCF服务进行一次调用,它可以正常工作,但是当有两个或多个并行调用WCF服务时,没有收到任何响应。

所有服务调用都是在指定的时间间隔之后进行的。以下是其中一个的代码:

var type = "POST";
var contentType = "application/json; charset=utf-8";
var dataType = "json";
var processData = true;

function LoadData()
{
  var url = serviceURL;
  var data = '{}';
  CallService(url, data, LoadDataSuccess);
}

function LoadDataSuccess(result)
{
  if (dataType == "json")
  {
   //other code...

    setTimeout("LoadData()", 5000);
  }
}

function CallService(url, data, SuccessMethod)
{
  $.ajax({
    type: type, //GET or POST or PUT or DELETE verb
    url: url, // Location of the service
    data: data, //Data sent to server
    contentType: contentType, // content type sent to server
    dataType: dataType, //Expected data format from server
    processdata: processData, //True or False
    success: function (msg)
    {
      SuccessMethod(msg);
    },
    error: ServiceFailed
  });
}

function ServiceFailed(result)
{
  alert('Service call failed: ' + result.status + '' + result.statusText);
  type = null; contentType = null; dataType = null; processData = null;
}

我的wcf服务看起来像这样:

public interface ITestService
  {
    [OperationContract]
    [WebInvoke(Method = "POST",
               BodyStyle = WebMessageBodyStyle.Wrapped,
               ResponseFormat = WebMessageFormat.Json,
               RequestFormat = WebMessageFormat.Json)]
    List<Data> GetData();

    [OperationContract]
    [WebInvoke(Method = "POST",
               BodyStyle = WebMessageBodyStyle.Wrapped,
               ResponseFormat = WebMessageFormat.Json,
               RequestFormat = WebMessageFormat.Json)]
    List<Data> GetUser();

    [OperationContract]
    [WebInvoke(Method = "POST",
               BodyStyle = WebMessageBodyStyle.Wrapped,
               ResponseFormat = WebMessageFormat.Json,
               RequestFormat = WebMessageFormat.Json)]
    List<Data> GetCustomer();
  }

配置如下:

<system.serviceModel>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
    <behaviors>
      <endpointBehaviors>
        <behavior name="EndpBehavior"> 
          <webHttp />
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors> 
        <behavior name="ServiceBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior> 
        <behavior name=""> 
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior> 
      </serviceBehaviors>  
    </behaviors>
    <services>
      <service behaviorConfiguration="ServiceBehavior" name="TestService">
        <endpoint address="" binding="webHttpBinding" contract="ITestService" behaviorConfiguration="EndpBehavior"/>
      </service>
    </services>
</system.serviceModel>

0 个答案:

没有答案
相关问题