Я хочу добавить настраиваемые заголовки к каждому запросу, сделанному из моего приложения Silverlight в RIA DomainService.
Я делаю это, добавляя пользовательское поведение в коллекцию поведений конечной точки клиента домена.
Затем мое поведение добавляет пользовательский MessageInspector, который устанавливает мои пользовательские заголовки для запроса.
Все это отлично работает в IE, но в Google Chrome я получаю исключение, говорящее: "... Тип содержимого text/plain; charset=x-user-defined ответного сообщения не соответствует типу содержимого привязки (приложение /msbin1)...".
Кому-нибудь когда-нибудь удавалось добавлять собственные заголовки в запрос RIA Services и заставить его работать в Google Chrome? Может ли кто-нибудь помочь мне с этим?
Вот код моего пользовательского поведения:
public class AppendExtraHeadersHttpBehavior : WebHttpBehavior
{
public AppendExtraHeadersHttpBehavior()
{
}
public override void ApplyClientBehavior( ServiceEndpoint endpoint, ClientRuntime clientRuntime )
{
clientRuntime.MessageInspectors.Add( m_inspector );
}
private readonly AppendExtraHeadersMessageInspector m_inspector = new AppendExtraHeadersMessageInspector();
}
Вот код моего собственного инспектора сообщений:
public class AppendExtraHeadersMessageInspector : IClientMessageInspector
{
public AppendExtraHeadersMessageInspector()
{
}
public void AfterReceiveReply( ref Message reply, object correlationState )
{
// Nothing to do here.
}
public object BeforeSendRequest( ref Message request, IClientChannel channel )
{
var property = request.Properties[ HttpRequestMessageProperty.Name ] as HttpRequestMessageProperty;
if( property != null )
{
property.Headers[ "CultureName" ] = Thread.CurrentThread.CurrentCulture.Name;
}
return null;
}
}
И, наконец, вот код, который я добавил частично для своего DomainContext.
partial void OnCreated()
{
var domainClient = this.DomainClient as WebDomainClient<IMyServiceContract>;
if( domainClient != null )
{
domainClient.ChannelFactory.Endpoint.Behaviors.Add( AppendExtraHeadersHttpBehavior );
}
}
private static readonly AppendExtraHeadersHttpBehavior AppendExtraHeadersHttpBehavior = new AppendExtraHeadersHttpBehavior();
Заранее спасибо!