OutgoingMessageHeaders에 MessageHeader를 쓰려고하는데 그 값이 달라 붙지 않습니다. 내가 두 번 OutgoingMessageHeaders을 설정하고 있음을WCF OutgoingMessageHeaders 값을 저장하지 않습니다.
BasicHttpBinding basicHttpBinding = new BasicHttpBinding();
EndpointAddress endpointAddress = new EndpointAddress("http://localhost:1003/Client.svc");
IClientService serviceClient = new ChannelFactory<IClientService>(basicHttpBinding, endpointAddress).CreateChannel();
// attempt 1
using (OperationContextScope scope = new OperationContextScope(serviceClient as IContextChannel))
{
OperationContext.Current.OutgoingMessageHeaders.Add(MessageHeader.CreateHeader("SessionId","","ABC"));
}
// attempt 2
using (OperationContextScope scope = new OperationContextScope(serviceClient as IContextChannel))
{
OperationContext.Current.OutgoingMessageHeaders.Add(MessageHeader.CreateHeader("SessionId","","ABC"));
}
OK, 당신은 볼 수 있지만 그 점을 증명하는 것입니다. 두 번째 시도에서 실제 추가 작업을 수행하기 전에 OperationContext.Current.OutgoingMessageHeaders를 검사합니다. 나는 이것이 1 개의 입구를 가지고 있기를 기대할 것이다. 그러나 그것은 0입니다. 사용 범위를 벗어나면 값이 손실됩니다.
이 메시지가 서버로 전달되면 메시지 헤더를 찾을 수 없다는 메시지가 표시됩니다. 메시지 헤더는 찾을 수 없으므로 해당 메시지가 저장되지 않았 음을 나타냅니다.
내 MessageHeader가 고집하지 않는 이유는 무엇입니까?
제프
정확히 - 실제로 ** 사용 ** 블록 안에있는 호출을 할 필요가 있습니다! –
Arghh. 당연하지! 프록시를 사용할 때 프록시를 사용하는 모든 호출을 변경하지 않아도되기 때문에 한 곳에서이 기능을 설정할 수 있기를 바랬습니다. 행동을 사용하고 메시지를 그런 식으로 조정해야 할 것처럼 보입니다. 그 접근법에서 볼 수있는 문제는 WCF를 사용하지 않는 무언가가 사용할 수있는 서비스 메소드를 멈출 수 있다는 것입니다 :-( –