başka hüner, ben böyle 'kandırdın' yok bir şey bu yana:
istemci tarafında Messageheader ekleyin: "Ad"
using (OperationContextScope scope = new OperationContextScope(cli.InnerChannel))
{
OperationContext.Current.OutgoingMessageHeaders.Add(MessageHeader.CreateHeader("MyHeader", Guid.NewGuid().ToString(), ""));
string ret = cli.GetData(1);
}
başlığının mülkiyet Adını var Göndermek istediğim üstbilginin ve İsim-alanı olarak değer-taşıyıcı olarak kullanıyorum (çünkü üstbilginin bu "değerine" erişemiyorum - mülkiyet olarak gösterilmiyor mu ?!). Bir hizmet örneği oluşturduğumda, istemci tarafında bunu yapıyorum. hizmetinde
ben gibi başlığını okuyun: Kesinlikle bir hack, ama bir şey daha şık yaratmak için zaman bitti ve bu da bana 'kanal kimlik' yolunu sürdürmek için izin verir
var head = OperationContext.Current.IncomingMessageHeaders.FirstOrDefault(h => h.Name == "MyHeader");
string channelId = head.Namespace;
Ben kontrol edebilirsiniz ... o çirkin çözüm ve ben bunu sevmiyorum, bu yüzden birileri daha iyi bir şey bulduğunda sevinirim ...
düzenlemek: Ben Giden/IncomingMessageProperties kullanarak çalıştı ama o kötü kokan işe yaramaz - sunucu tarafında bulunacak bir yer yok ... Muhtemelen bir şeyleri özlüyorum ...
Kullanım durumu nedir, bununla ne elde etmeye çalışıyorsunuz? –
Yazdığım gibi - Açılırken her kanalda hangi yöntemlerin çağrıldığını izleyen kanal kimliğine dayanan bir tarih tablosunda günlüğe sahip olmaya çalışıyorum. Ayrıca, hangi kanalların açıldığını izlemek için bir yol var (bazı iş mantığı için). – veljkoz
Yanılmıyorsam yazarın herhangi bir SessionMode olmaması durumunda, oturum geri aramayı veya başka bir bilgiyi geri almak için OperationContext.Current öğesine erişemez. –