Создание HttpOperationHandler позволит вам обработать необязательный параметр запроса в одном месте.Однако, если вашей Операции нужно знать, был ли установлен SuppressStatusCodes, то самый простой способ получить к нему доступ через параметр в сигнатуре операции.
В зависимости от того, что вам нужно сделать, это может бытьМожно выполнить всю обработку в вашем пользовательском HttpOperationHandler.Можете ли вы описать влияние SuppressStatusCodes на ответ?
Обновление: Это может быть сделано на более высоком уровне с использованием HttpMessageHandler.Вы можете проверить URL для параметра запроса и изменить код состояния напрямую.Вот совершенно непроверенный пример того, как это можно сделать:
public class StatusKillerMessageHandler : DelegatingChannel {
public StatusKillerMessageHandler(HttpMessageChannel innerChannel)
: base(innerChannel) {
}
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) {
bool suppressStatusCode = (request.RequestUri.AbsoluteUri.ToLower().Contains("suppress=true"));
return base.SendAsync(request, cancellationToken).ContinueWith<HttpResponseMessage>(task => {
var response = task.Result;
if (suppressStatusCode) {
response.StatusCode = HttpStatusCode.OK;
}
return response;
});
}
}