上下文
我有一个Asp.net网络应用程序,一些页面继承自基类“BasePage”.
这个BasePage类继承自System.Web.ui.Page,我已经覆盖了Render方法,以便我可以在将HTML流发送到客户端浏览器之前拦截.
protected override void Render(HtmlTextWriter writer){ MemoryStream memoryStream = new MemoryStream(); try { using (StreamWriter streamWriter = new StreamWriter(memoryStream)) { var textWriter = new HtmlTextWriter(streamWriter); base.Render(textWriter); textWriter.Flush(); memoryStream.Position = 0; using (StreamReader reader = new StreamReader(memoryStream)) { string finalHtml = reader.ReadToEnd(); // Processing filters finalHtml = FilterManager.ProcessFilters(finalHtml); // Writing output to client writer.Write(finalHtml); reader.Close(); } } } catch(ObjectDisposedException) { } finally { memoryStream.Dispose(); } }
到现在为止还挺好.有用.我没有使用response filtering feature的原因是我知道it wouldn’t be compatible with Post-cache substitution
是.我也想使用outputcache替换.为了测试的目的,我在aspx页面中添加了一个小的asp .net控件:
<asp:Substitution runat="server" id="UnCachedArea" methodname="GetFreshDateTime" />
protected static string GetFreshDateTime(HttpContext context) { return DateTime.Now.ToString(); }
…和…它的工作原理!我的过滤器只能在第一页加载中工作,并且在页面上进行的每次刷新都会发生替换.
问题
替换字符串插入到错误的位置,恰好在开放标签之后,而我的可疑控件位于页面底部的页脚中.
任何线索?