У меня есть простая служба WCF RESTful, размещенная в IIS. Я вызываю WCF с помощью браузера. Я вызываю службу одновременно, используя разные вкладки в браузере. Ниже приведен код для службыRESTful вызов WCF заблокирован до завершения предыдущего вызова
[ServiceContract]
public interface IWCFService
{
[OperationContract]
[WebGet(UriTemplate = "DoWork", ResponseFormat = WebMessageFormat.Json)]
string DoWork();
}
public class WCFService : IWCFService
{
public string DoWork()
{
string ret = "Enter time is " + System.DateTime.Now + " " + System.DateTime.Now.Millisecond;
System.Threading.Thread.Sleep(10000);
ret += ". Exiting time is " + System.DateTime.Now + " " + System.DateTime.Now.Millisecond;
return ret;
}
}
И ниже файл web.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="WCFService.WCFServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="WCFService.WCFServiceBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="WCFService.WCFServiceBehavior" name="WCFService.WCFService">
<endpoint address="" binding="webHttpBinding" contract="WCFService.IWCFService" behaviorConfiguration="WCFService.WCFServiceBehavior">
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
</configuration>
Даже если я ввожу адрес в быстрых сукцессиях время окончания первого есть начало время из второй, например, выход одной страницы
- Введите время 12/05/2015 4:55:24 PM 568.
- время Выхода в 12/05/2015 4:55:34 PM 569.
то следующая страница
- Введите время 12/05/2015 4:55:34 PM 578.
- время Выход в 12/05/2015 4:55:44 PM 579.
Что может быть причиной этого и как его можно исправить, чтобы все вызовы обрабатывались сразу же после их прибытия?
Почему вы заходящего 'InstanceContextMode = InstanceContextMode.Single'? - в требовании OPs нет ничего, что должно ограничивать обслуживание одним экземпляром. –
Вы правы, я скопировал его с помощью сервиса здесь – Laurijssen
OK Я дал вам передержку для вызова параллелизма. –