[英]Strange Content and Deleted page is still viewable in Umbraco
我正在运行umbraco v 4.0.3。 我的Web服务器是Windows Server 2003。
我注意到,除了其中托管的控件之外,还显示了我的其中一个页面以及来自父节点的内容。 由于该页面仅充当ascx控件的宿主,因此它没有自己的内容。
节点的内容区域为空,所以我不知道该内容的来源。
我已经做了以下尝试来解决问题的方法,但是这些都没有导致问题页面发生变化。 该页面仍然存在。
导航到页面时,我没有做任何更改 。 在这一点上,我应该得到一个404,但是页面仍然加载并仍然运行宏。
在这一点上,我不知所措,但是我猜想它与IIS或Dot.Net和缓存有关。
有人知道如何解决此问题吗?
编辑
我发现,如果我从构建删除页面的模板上删除了XSLT宏引用,则当在浏览器中加载删除页面时,父页面的复制就会消失。 由于这是我的主要问题,因此我重新创建了页面并继续。 我仍然困惑为什么删除的页面能够从多个浏览器加载。
我删除的宏用于我们网站的1,500多个页面中的绝大部分,并且在这些页面上都没有复制该宏在孩子身上的文档,在我看来XSLT宏也无法到达该宏之外。 XML缓存。 我已经查看了代码,但没有看到对其他数据存储的任何引用。 我承认XSLT对我来说还是很新的。
下面列出了我删除了其引用的宏的代码。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:Stylesheet [ <!ENTITY nbsp " "> ]>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxml="urn:schemas-microsoft-com:xslt"
xmlns:umbraco.library="urn:umbraco.library"
xmlns:custom="urn:custom.library"
exclude-result-prefixes="msxml umbraco.library custom">
<xsl:output method="xml" omit-xml-declaration="yes"/>
<msxml:script language="C#" implements-prefix="custom">
public System.Xml.XPath.XPathNodeIterator SplitMultiPageText(string unsplitText,
string pageDelimeter) {
System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
string[] splitPages = System.Text.RegularExpressions.Regex.Split(unsplitText, pageDelimeter);
System.Xml.XmlElement pagesElement = xmlDoc.CreateElement("pages");
foreach (string page in splitPages) {
System.Xml.XmlElement pageElement = xmlDoc.CreateElement("page");
pageElement.AppendChild(xmlDoc.CreateCDataSection(page));
pagesElement.AppendChild(pageElement);
}
return pagesElement.CreateNavigator().Select(".");
}
</msxml:script>
<xsl:param name="currentPage"/>
<xsl:variable name="content" select="/macro/content" />
<xsl:variable name="pageNumber" select="/macro/pageNumber" />
<xsl:variable name="joinContent">
<xsl:choose>
<xsl:when test="/macro/joinContent = ''">
<xsl:value-of select="boolean(false)" />
</xsl:when>
<xsl:otherwise><xsl:value-of select="/macro/joinContent" /></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="splitExpr"><hr class="pagebreak" /></xsl:variable>
<xsl:template match="/">
<xsl:variable name="pages" select="custom:SplitMultiPageText($content, $splitExpr)" />
<xsl:variable name="pageCount" select="count($pages/page)" />
<xsl:choose>
<xsl:when test="$pageCount = 1 or string($joinContent) = 'true'">
<xsl:for-each select="$pages/page">
<xsl:value-of
select="umbraco.library:RenderMacroContent(., $currentPage/@id)"
disable-output-escaping="yes" />
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<p class="multiPageNotice">This document is split among multiple pages. To view
the other pages, use the <strong>page selector</strong> near the bottom of the screen.</p>
<xsl:for-each select="$pages/page">
<xsl:if test="position() = $pageNumber or ( $pageNumber = '' and position() = 1 )">
<xsl:value-of
select="umbraco.library:RenderMacroContent(., $currentPage/@id)"
disable-output-escaping="yes" />
</xsl:if>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="$pageCount > 1 and string($joinContent) != 'true'">
<div class="pageSelector">
<p>Page: </p>
<ul>
<xsl:for-each select="$pages/page">
<li>
<xsl:choose>
<xsl:when test="position() = $pageNumber or ( $pageNumber = '' and position() = 1 )">
<xsl:value-of select="position()" />
</xsl:when>
<xsl:otherwise>
<a href="{umbraco.library:NiceUrl($currentPage/@id)}/page/{position()}">
<xsl:value-of select="position()" />
</a>
</xsl:otherwise>
</xsl:choose>
</li>
</xsl:for-each>
</ul>
</div>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
根据您的评论,宏可能会将内容持久保存到与应用程序/ umbraco配置无关的存储中,例如xml文件或基于db的会话。 显然,这将在应用程序重新启动之外保留数据。 显然,我们将不得不看到宏的代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.