Как сделать несколько параллельных вызовов службы WCF из jquery - PullRequest
0 голосов
/ 19 января 2012

Мне нужно сделать несколько вызовов службы WCF с помощью jquery для обновления различных областей веб-страницы через определенный промежуток времени. Если я сделаю один вызов службе 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>
...