使用OpenRasta HTTPEntity作为返​​回响应时获取406?

时间:2011-10-26 00:23:59

标签: dotnetopenauth openrasta

在我的处理程序代码中尝试使用必要的openid headers / body返回重定向响应来执行用户代理重定向以进行身份​​验证,但是当我在Operation结果中设置带有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 个答案:

答案 0 :(得分:1)

我们目前不支持IMessage / IHttpEntity / IResponse作为返回类型,因此不起作用(但如果确实如此,它可能会很棒)。

现在的问题是IRequest / IResponse(及相关实体)由托管环境控制。

如果你希望它按原样工作,我建议创建一个自定义编解码器,在IHttpEntity(ResourceSpace.Has.ResourcesOfType()。WithoutUri.TranscodedBy())上注册它,并使用该编解码器复制标题和在现有的IResponse身上,你应该带5个LOC。

我在https://github.com/openrasta/openrasta-core/issues/33上打开了一个错误,因此我们可以将其移到核心。

相关问题