0

在我的处理程序代码中,尝试使用必要的 openid 标头/正文返回重定向响应以执行用户代理重定向以进行身份​​验证,但是当我在操作结果中使用 HTTPEntity 设置返回响应时,我得到 406 Not Acceptable 在客户端?那有什么问题?以下代码不完整,具有原型质量!

这是我的处理程序代码:

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 };

 }
4

1 回答 1

1

我们目前不支持 IMessage / IHttpEntity / IResponse 作为返回类型,所以这不起作用(但如果它支持它会很棒,而且它可能应该)。

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

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

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

于 2011-10-26T08:05:40.240 回答