Это действительно старая ветка, но я наткнулся на нее в поиске ответа на тот же вопрос.
Я нашел ответ еще где, и оставлю его здесь для других интернетов вместо меня:
В Global.asax вы можете указать для каждого запроса, какой доступ должен иметь запрос к объекту сеанса и, следовательно, должен ли он блокироваться или нет.
private void Application_BeginRequest(object sender, EventArgs e)
{
// This will set the session to read only for asmx services
// This will make the asmx services non blocking for other requests as it doesnt lock the session object
if (Context.Request.Path.Contains(".asmx/"))
{
Context.SetSessionStateBehavior(SessionStateBehavior.ReadOnly);
}
}
Таким образом, службы asmx всегда имеют доступ только для чтения к сеансу и не блокируют другие запросы