Прервать задачу сервера WCF, если клиент отключен - PullRequest
2 голосов
/ 20 января 2012

У нас есть служба WCF, размещенная в службе Windows. Клиент этой службы настроил 5 минут, closeTimeout, receiveTimeout, openTimeout, sentTimeout. Сервис также имеет то же самое. При определенных обстоятельствах для выполнения задачи службе WCF может потребоваться более 5 минут. В этом случае клиент прерывает вызов, но процесс службы продолжает работать, пока не завершит свою работу.

Теперь возникает вопрос ... есть ли какая-либо конфигурация / методика, которая обнаружила бы, что клиент отключен или истекло время ожидания (или что-то еще?), Чтобы служба WCF могла просто прервать свои задачи?

1 Ответ

1 голос
/ 20 января 2012

Это не просто , если нет невозможно (так что это в значительной степени дублирующий вопрос).

Вы действительно хотите, чтобы операция была отменена, когда клиент отключается? В противном случае вы могли бы реализовать некоторый механизм, подобный состоянию, используя некую рабочую очередь.

Затем клиенты вызывают QueueQuery(query), который не делает ничего, кроме этого, и возвращает идентификатор только что поставленного в очередь запроса. После этого клиент может продолжить опрос QueryStatus(id) для получения статуса (например, «В очереди», «Выполняется», «Завершено»), а после завершения запроса он может вызвать QueryResults(id).

.

Между тем другая служба (т.е. служба Windows, а не служба WCF) продолжает выполнять все запросы в очереди.

...