在我的处理程序代码中尝试使用必要的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 };
}
答案 0 :(得分:1)
我们目前不支持IMessage / IHttpEntity / IResponse作为返回类型,因此不起作用(但如果确实如此,它可能会很棒)。
现在的问题是IRequest / IResponse(及相关实体)由托管环境控制。
如果你希望它按原样工作,我建议创建一个自定义编解码器,在IHttpEntity(ResourceSpace.Has.ResourcesOfType()。WithoutUri.TranscodedBy())上注册它,并使用该编解码器复制标题和在现有的IResponse身上,你应该带5个LOC。
我在https://github.com/openrasta/openrasta-core/issues/33上打开了一个错误,因此我们可以将其移到核心。