Запускаю веб сервис:
var host = new ServiceHost(typeof(Service), new Uri("http://localhost:8732/Design_Time_Addresses/Service/"));
host.AddServiceEndpoint(typeof(IService), new WebHttpBinding(), "http://localhost:8732/Design_Time_Addresses/Service/http");
host.Description.Endpoints.Find(new Uri("http://localhost:8732/Design_Time_Addresses/Service/http")).Behaviors.Add(new WebHttpBehavior());
host.Open();
// ...
[ServiceContract]
public interface IService {
[OperationContract, WebGet(UriTemplate = "A")]
string A();
[OperationContract, WebGet(UriTemplate = "B")]
string B();
}
// ...
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.PerSession, UseSynchronizationContext = false)]
public class Service : IService {
public string A() {
Console.WriteLine("Hello from A, " + Thread.CurrentThread.ManagedThreadId.ToString());
Thread.Sleep(20000);
return "";
}
public string B() {
Console.WriteLine("Hello from B, " + Thread.CurrentThread.ManagedThreadId.ToString());
Thread.Sleep(20000);
return "";
}
}
При параллельном вызове методов (из браузера)
первый и третий выполняются параллельно, а второй ждет окончания работы первого.
Как полечить?