0

我尝试从我的自定义 OutputCacheProvider CacheEntry 缓冲区中截取 textraw。

当我使用时, cacheEntry.ResponseElements.First()我得到了我的 html 页面的一半,但是当我尝试连接所有块时,我得到了一个糟糕的响应(看起来像二进制序列化数据)。我该怎么做:

IOutputCacheEntry cacheEntry = cachedItem.Item as IOutputCacheEntry;
StringBuilder textResponse = new StringBuilder();
                foreach (var responseRaw in cacheEntry.ResponseElements.Where(s=>!(s is FileResponseElement )))
                {

                    Byte[] bytes = (Byte[])responseRaw.GetType().GetField("_buffer",
                        BindingFlags.NonPublic |
                        BindingFlags.Instance).GetValue(responseRaw);
                    textResponse.Append(Encoding.Default.GetString(bytes));    
                }

编辑:我尝试在“字符串化”它们之前连接所有字节 [],并尝试使用 UTF-8 编码。

4

1 回答 1

0

您是否使用了正确的编码?Encoding.Default返回当前系统 ANSI 代码页的编码。如果您使用 UTF-8 或其他编码,这可能不起作用。您应该检查Content-type:标头以识别要使用的正确编码。

于 2013-06-07T09:06:32.533 回答