вы можете добавить эти значения в заголовок исходящего запроса.
Предположим, вы сделали «Add Service Reference
» в своем приложении-клиенте вашего WCF-DataService
.
затем внутри Reference.cs
службы (на клиенте), поиск OnContextCreated
события:
, а затем добавить обработчик события SendingRequest
partial void OnContextCreated()
{
this.SendingRequest += Entity_SendingRequest;
}
и внутри Entity_SendingRequest
вы можете добавить заголовки.
void Entity_SendingRequest(object sender, SendingRequestEventArgs e)
{
e.RequestHeaders.Add("myusername", "blabala");
e.RequestHeaders.Add("mycurrentusersession", "23434sdfgdf");
}
, которые вы можете очень легко обрабатывать на стороне сервера то есть в DataContext в WCF-DataService.
вы также можете передать CookieContainer
. Это основа аутентификации форм для служб WCF-Data.
void Entity_SendingRequest(object sender, SendingRequestEventArgs e)
{
CookieContainer cookieContainer = new CookieContainer();
foreach (var cc in _cookies)
{
Cookie cookie = new Cookie(cc.Key, cc.Value.Value);
cookieContainer.Add(new Uri("http://localhost", UriKind.Absolute), cookie);
}
var cookieHeader = cookieContainer.GetCookieHeader(new Uri("http://localhost",
UriKind.Absolute));
e.RequestHeaders["Cookie"] = cookieHeader;
}
Спасибо. Еще 2 вопроса: как это будет работать в веб-клиенте? как я могу отправить свой токен с сервера на клиент для извлечения, не меняя формат сущности? – user355289
его еще проще сделать с помощью WebClient. 'client.Headers.Add (" myusername "," blabala ");'. а затем вы можете обработать его внутри OnStartProcessingRequest –
спасибо. Ищете способ привязать мой токен к клиенту. – user355289