Получение SOAP-заголовков в ответах на Silverlight не так просто, как должно быть. Если вы используете обратные вызовы на основе событий, вам не повезло - это просто не работает. Вам нужно использовать вызов операции типа Begin / End, как в примере ниже.
void Button_Click(...)
{
MyClient client = new MyClient();
IClient proxy = (IClient)client; // need to cast to the [ServiceContract] interface
proxy.BeginOperation("hello", delegate(IAsyncResult asyncResult)
{
using (new OperationContextScope(client.InnerChannel))
{
proxy.EndOperation(asyncResult);
var headers = OperationContext.Current.IncomingMessageHeaders;
// now you can access it.
}
});
}
Обратите внимание, что вы не можете использовать сгенерированный клиент (из slsvcutil / add service reference) напрямую, вам нужно привести его к интерфейсу, так как методы Begin / End не предоставляются (явно реализованы) в классе клиента. *