0

Custom OutputCacheProvider CacheEntry Buffer から 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));    
                }

edit : 「Stringify」する前にすべての byte[] を連結しようとし、UTF-8 エンコーディングで試しました。

4

1 に答える 1

0

正しいエンコーディングを使用していますか? Encoding.Default現在のシステム ANSI コードページのエンコーディングを返します。UTF-8 またはその他のエンコーディングを使用している場合、これは機能しない可能性があります。ヘッダーをチェックして、Content-type:使用する正しいエンコーディングを特定する必要があります。

于 2013-06-07T09:06:32.533 に答える