WCF читает несколько "одинаковых" заголовков

У меня проблемы с чтением нескольких SOAP-заголовков с одинаковыми именами и пространством имен. Обычный

request.Headers.GetHeader<string>("Name", "Namespace")

генерирует исключение, если существует несколько SOAP-заголовков с заданным именем и пространством имен.

Я пришел к следующему решению, но я надеюсь, что есть более простой способ, потому что это немного слишком много, если вы спросите меня:

var list = request.Headers.ToList(); // .ToList() might not be neccessary...
var indexes = list.Select((x, i) => new { Idx = i, Obj = x })
    .Where(x => x.Obj.Name == "App" 
        && x.Obj.Namespace == SoapUtilities.NAMESPACE)
    .Select(x => x.Idx).ToList();
List<string> applist = new List<string>();

foreach (var idx in indexes)
{
    string app = request.Headers.GetHeader<string>(idx);
    applist.Add(app);
}

Конечно, я могу сделать это:

request.Headers.Where(x=>x.Name = "App" 
    && x.Namespace = SoapUtilities.NAMESPACE).ToList();

... но это дает список MessageHeaderInfo, и я не могу понять, как легко извлечь из него полезную нагрузку SOAP-заголовка...

С уважением,

Эдвин.

0 ответов

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