[英]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.