WCF读取多个“相同”标题

时间:2013-12-16 13:56:39

标签: c# wcf soap soapheader

我在使用相同的Name和Namespace读取多个SOAP标头时遇到问题。通常的

request.Headers.GetHeader<string>("Name", "Namespace")
如果有多个具有给定名称和命名空间的SOAP-Header,则

抛出异常。

我提出了以下解决方案,但我希望有一种更简单的方法,因为如果你问我这有点太多了:

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-header中获取有效负载...

亲切的问候,

埃德。

0 个答案:

没有答案