在任何 Sitecore 客户端界面中工作时来自 Cassette 的空响应流是由rewriteHtml
它实现的功能引起的。
默认情况下,Cassette 将缓冲和重写页面 HTML 输出。这允许部分视图在标签被渲染<link>
后插入引用样式表的标签。<head>
重写功能作为PostRequestHandlerExecute
事件处理程序被调用。
您看到的空响应流是由于已重写的输出流没有被刷新。解决此问题的方法是在类上调用 Close 时刷新输出流Cassette.AspNet.PlaceholderReplacingResponseFilter
,如下所示:
void WriteUncompressedOutput()
{
var output = GetOutputWithPlaceholdersReplaced(bufferStream);
var outputBytes = outputEncoding.GetBytes(output);
if (outputBytes.Length > 0)
{
outputStream.Write(outputBytes, 0, outputBytes.Length);
outputStream.Flush();
}
}
如果您不需要重写功能,现在可以使用解决方法。只需禁用 Cassette HTML 重写功能,无论是在web.config
:
<configuration>
<configSections>
....
<section name="cassette" type="Cassette.CassetteConfigurationSection, Cassette"/>
</configSections>
<cassette rewriteHtml="false"/>
或在代码中:
public class CassetteSettingsConfiguration : IConfiguration<CassetteSettings>
{
public void Configure(CassetteSettings configurable)
{
configurable.IsHtmlRewritingEnabled = false;
}
}
此信息包含在我关于将 Cassette 与 Sitecore 结合使用的博客文章中。