Как недавно добавленный файл global.asax может испортить мой сервис WCF?

У меня есть приложение silverlight, которое использует WCF, опрашивая дуплекс и "обычные" асинхронные вызовы. все работало нормально, пока я не добавил файл global.asax.

После часа поисков в Интернете я наткнулся на этот довольно устаревший блог Жана-Дирка Стюарта, в котором предлагалось закомментировать заурядное событие Session_start.

Конечно, это исправило проблему, но это вызывает опасения. Почему этот, казалось бы, доброкачественный элемент файла global.asax нарушает вызовы wcf?

2 ответа

Решение

Да, это малоизвестная, но раздражающая проблема. Проблема сводится к тому, что состояние сеанса включается после добавления файла global.asax в ваш веб-проект. Когда состояние сеанса включено, сервер будет выполнять вызовы только последовательно. Вот две статьи с более подробной информацией:

http://blogs.msdn.com/b/silverlightws/archive/2009/09/30/having-a-pollingduplex-service-and-any-other-wcf-service-in-the-same-website-causes-silverlight-calls-to-be-slow.aspx

http://weblogs.asp.net/olakarlsson/archive/2010/05/20/simultaneously-calling-multiple-methods-on-a-wcf-service-from-silverlight.aspx

Это происходит только при использовании сетевого стека браузера, поэтому вы можете:

  1. Отключить состояние сеанса в вашем веб-проекте, или
  2. Используйте клиентский сетевой стек

Надеюсь это поможет...

Крис

Существует несколько типов привязки, которые поддерживают доступ к данным сеанса asp.net, я действительно не понимаю, как это повлияет, если WCF не попытается подключиться к событию session_start, как это делает модуль http. Вы также можете использовать рефлектор, чтобы разобрать код там, где вы получили исключение.

Другие вопросы по тегам