2011-10-26 2 views
0

В моем коде обработчика, пытающемся вернуть ответ перенаправления с необходимыми заголовками/телами openid, чтобы выполнить перенаправление пользовательского агента, чтобы выполнить аутентификацию, но когда я установил ответ возврата с HTTPEntity в результате операции, я получаю 406 Не приемлемо на клиент? Что не так с этим? Следующий код не является полным и имеет качество прототипа!Получение 406 при использовании OpenRasta HTTPEntity в качестве ответного ответа?

Вот код моего обработчика:

private static OpenIdRelyingParty openid = new OpenIdRelyingParty(); 
public OperationResult Get(string contentId) 
{ 
    var response = openid.GetResponse(); 
    Identifier id; 
    Identifier.TryParse("https://www.google.com/accounts/o8/id", out id); 
    OutgoingWebResponse owr = openid.CreateRequest(id).RedirectingResponse; 

    HttpEntity he = new HttpEntity(new HttpHeaderDictionary(owr.Headers), owr.ResponseStream); 

    return new OperationResult.SeeOther { ResponseResource = he }; 

} 

ответ

1

Мы не поддерживаем Шеззад/IHttpEntity/IResponse как типы возвращаемых в данный момент, так что не будет работать (но было бы здорово, если бы это было , и это, вероятно, должно).

Проблема заключается в том, что IRequest/IResponse (и связанные с ним сущности) контролируются средой хостинга.

Если вы хотите, чтобы он работал как есть, я бы предложил создать собственный кодек, зарегистрировать его на IHttpEntity (ResourceSpace.Has.ResourcesOfType(). WithoutUri.TranscodedBy()) и использовать этот кодек для копирования заголовков и тело на существующем IResponse, которое должно принять вас 5 LOC.

Я открыл ошибку на https://github.com/openrasta/openrasta-core/issues/33, чтобы мы могли переместить это в ядро.

+0

С благодарностью serialseb, я получил его работу с одним исключением, ответ имеет readonly заголовки, поэтому он не может установить заголовки на том, что мы каким-то образом можем это сделать? – Overture

+0

Какой хостинг это? – SerialSeb

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