2011-10-26 26 views
0

在我的处理程序代码试图返回重定向响应与必要的openid头/身体做用户代理重定向做认证,但是当我在操作结果中设置HTTPEntity的返回响应时,我得到406不可接受的客户?那有什么问题?以下代码不完整,并且具有原型质量!使用OpenRasta 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

我们不支持即时聊天/ IHttpEntity/IResponse作为返回类型的那一刻,这样,才不会工作(但如果没有,那就太棒了,它可能应该)。

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

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

我打开了一个关于https://github.com/openrasta/openrasta-core/issues/33的错误,所以我们可以将其移入核心。

+0

谢谢serialseb,我得到它的工作,有一个例外,响应只读标题,所以无法设置标题,有没有什么办法,我们可以做到这一点? – Overture

+0

哪个托管是为? – SerialSeb