【问题标题】:Setting errorPage in Umbraco在 Umbraco 中设置 errorPage
【发布时间】:2011-05-27 04:19:51
【问题描述】:

我正在使用 Umbraco 开发一个 Web 应用程序。我创建了一个名为 PageNotFound 的内容,并且在 umbracoSettings.config 文件的错误部分中,我将其节点 id 设置为 404 error404。问题是,在 IIS 7 中,IIS 总是在 web.config 中查找 HttpErrors 部分,而不关注 umbracoSettings.config。

我该怎么办?

【问题讨论】:

    标签: .net umbraco http-error


    【解决方案1】:

    在我添加之前,500 个错误不起作用

    existingResponse="Replace"
    

    这样

    <httpErrors errorMode="Custom" existingResponse="Replace">
      <remove statusCode="404" subStatusCode="-1" />
      <remove statusCode="500" subStatusCode="-1" />
      <error statusCode="404" path="/non-existing-page.aspx" responseMode="ExecuteURL" />
      <error statusCode="500" path="error.html" responseMode="File" />
    </httpErrors>
    

    【讨论】:

    • 只是一个小问题,500错误的路径属性是物理路径。因此,如果您在 views 文件夹中有 error.html 文件,您将使用 path="views\error.html" (注意反斜杠)。
    【解决方案2】:

    在您的 web.config(system.webServer 部分)中,您可以告诉站点将所有错误处理传递给应用程序:

    <httpErrors existingResponse="PassThrough" />
    

    这有一个缺点,即 Umbraco 只处理未找到的 .aspx 页面。

    你可以通过这样做来改善它:

    <httpErrors errorMode="Custom">
           <remove statusCode="404" subStatusCode="-1" />
           <error statusCode="404" prefixLanguageFilePath="" path="/non-existing-page.aspx" responseMode="ExecuteURL" />
    </httpErrors>
    

    Umbraco 中尚不存在不存在的 page.aspx,因此它会触发 404(因为它具有 aspx 扩展名)并且.. presto:Umbraco 完美地处理了 404!

    【讨论】:

    • 谢谢。但实际的问题是我做了你的第二个建议,但是在我定义的“找不到页面”页面中,我使用 XSLT 加载了一些块,当我直接浏览该页面时它们会出现,但是当我输入无效 URL 时页面显示,那些方块不会出现!
    • 我不知道为什么会这样,看起来你的 XSLT 中的逻辑可能是错误的。如果您直接访问 yoursite.com/non-existing-page.aspx,它们会出现吗?
    • 当我将errorMode更改为Detailed时,这些块出现了!这很奇怪!
    • 但我不想详细说明,因为销毁了我所有的重定向策略!
    • 不!对我来说也真是奇怪!使用自定义是行不通的!只有详细的 XSLT 内容被加载!我认为问题在于 IIS 7 中的某些设置。
    猜你喜欢
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-14
    • 1970-01-01
    • 2015-10-12
    • 2011-04-01
    相关资源
    最近更新 更多