Мне нужно сделать несколько вызовов службы 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>