2013-03-21 2 views
0

У меня есть существующее веб-приложение, которое я хочу обернуть с помощью служб данных WCF, чтобы дать ему форматирование ввода-вывода OData.службы передачи данных wcf - передача дополнительных параметров при сохранении изменений

При получении записей я могу отправить все, что мне нравится (myusername = "blabala", mycurrentusersession = "23434sdfgdf" и т. Д.). Но в «SaveChanges» Я не контролирую то, что посылается - хотя, я действительно нужна возможность поставки существующего приложения: - мой текущего сеанс пользователя - конкретное извлечение состояния ключа (мое существующее приложение с сохранением состояния)

ответ

1

вы можете добавить эти значения в заголовок исходящего запроса.

Предположим, вы сделали «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; 
} 
+0

Спасибо. Еще 2 вопроса: как это будет работать в веб-клиенте? как я могу отправить свой токен с сервера на клиент для извлечения, не меняя формат сущности? – user355289

+0

его еще проще сделать с помощью WebClient. 'client.Headers.Add (" myusername "," blabala ");'. а затем вы можете обработать его внутри OnStartProcessingRequest –

+0

спасибо. Ищете способ привязать мой токен к клиенту. – user355289

Смежные вопросы