У меня есть клиент silverlight, который может вызывать метод в моей веб-службе WCF для получения значений из базы данных.В случае длинного запроса я хочу дать пользователю возможность отменить его.
На стороне клиента, когда пользователь нажимает «Отмена», я вызываю «.Abort ()» на моем экземпляре WCF.Однако моя служба WCF все еще продолжит свою работу, так как не знает, что клиент больше не подключен.
Мой вопрос: возможно ли, чтобы служба WCF знала, что клиент разорвал соединение?
Я пытался описать события Channel.Closed / failed в моем методе контракта, но они никогда не запускаются ...
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
internal class MyContract: IMyContract
{
public object QueryDatabase(...)
{
System.ServiceModel.OperationContext.Current.Channel.Faulted += new System.EventHandler(Channel_Faulted);
System.ServiceModel.OperationContext.Current.Channel.Closed += new System.EventHandler(Channel_Faulted);
// Perform sql query
}
void Channel_Faulted(object sender, System.EventArgs e)
{
// Cancel SQL query here
}
}
Кто-нибудь знает, как это сделать?Спасибо!