Получаете 406 при использовании OpenRasta HTTPEntity в качестве ответного ответа? - PullRequest
0 голосов
/ 26 октября 2011

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

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

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 Ответ

1 голос
/ 26 октября 2011

В настоящее время мы не поддерживаем IMessage / IHttpEntity / IResponse в качестве типов возврата, так что это не сработает (но было бы здорово, если бы это было, и, вероятно, должно)).

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

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

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

...