【问题标题】:Orchard returns page not found未找到果园退货页面
【发布时间】:2012-11-28 23:05:05
【问题描述】:

我是 Orchard CMS 的新手。如果有任何错误,我需要向管理员创建电子邮件通知。我制作了一个自定义模块,因此它会向管理员发送电子邮件。另外,我已经从错误页面重定向到模块。

这是我在自定义主题中NotFound.cshtml 中的代码

<script type="text/javascript" language="javascript">
    function ToError() {
        window.location.href = '/FourOFour?LastURL=' +
            (window.location.host + window.location.pathname);
    }
    window.onload = ToError;
</script>

这是我创建的模块中的自定义路由

new RouteDescriptor {
    Priority = 11,
    Route = new Route(
        "FourOFour",
        new RouteValueDictionary {
            {"area", "Prenagen.ErrorEmailing"},
            {"controller","Utama"},
            {"action","Error404"}
        },
        new RouteValueDictionary(),
        new RouteValueDictionary{
            {"area", "Prenagen.ErrorEmailing"}
        },
        new MvcRouteHandler())
}

所以未找到的页面将重定向到/FourOFour。当我在 localhost 中测试它时,一切正常。我键入一个不存在的页面,然后它重定向到NotFound,然后重定向到/FourOFour?LastURL=page。并且电子邮件被发送给管理员。当我将它发布到服务器时,未找到重定向到 FourOFour,但未找到该页面。我该如何解决这个问题?请任何人帮助我。

编辑:它创建了一个无限循环,因为找不到FourOFour,它不断重定向到同一页面。

【问题讨论】:

  • 也许你没有启用你的模块?
  • @BertrandLeRoy 该模块已在本地和服务器中启用。但是,FourOFour 页面仍然返回Not Found。视图也不是问题,因为我已经在自定义主题和模块中创建了视图。
  • 您能否确认“Prenagen.ErrorEmailing”是您的项目名称、module.txt 中的模块名称以及modules 文件夹中包含您的模块的文件夹名称?如果我不让这些事情保持一致,我似乎会遇到麻烦。
  • 一些与提出的问题没有直接关系但代码引发的评论...重定向 404 是一个坏主意:用户无法查看他输入的 url 并自我纠正.在 Javascript 中重定向是一个坏主意:它不适用于没有 JS 的客户端,而服务器重定向工作得很好,那何必呢?最后,我想知道 Orchard 使用的日志库 Log4Net 是否无法原生捕获 404 并通过一些配置修改发送电子邮件。
  • @BrandonJoyce 是的,它是项目和模块的名称,在module.txt 文件中是这样描述的。 @BertrandLeRoy,所以如果有任何 404 错误,我可以重定向到某个位置?怎么做?如果可以的话,我一定会选择那种方式。

标签: error-handling orchardcms


【解决方案1】:

您的动态编译是否已禁用?

如果是这样,并且您只复制了您已更改的文件,这可能是您出现问题的原因。

可能导致您出现问题的另一件事是您所做的更改是否需要创建添加到项目中的新文件。如果是这种情况,您还应该将 .csproj 文件复制到服务器,以指示 Orchard 将新添加的文件包含在动态编译中。

尝试在发布模式下重建您的模块并将整个模块复制到服务器,而不是仅复制您更改的文件,看看是否有效..

【讨论】:

  • 如何查看动态编译?
  • 不随模块上传.csproj文件默认禁用。也可以使用文档 (docs.orchardproject.net/Documentation/…) 中描述的过程禁用它。我想我在某处读到,在 Orchard 1.6 中,默认情况下会禁用此功能(或者他们可能已经说过计划在某些未来版本中使用)。
  • 如果它被禁用,请确保您上传了模块的整个/bin 文件夹..
  • 所以我刚刚禁用了它。我现在将网络重新发布到服务器。另外,您的意思是/bin 文件夹是Orchard.Web\bin 中的那个吗?因为我已经上传了。而且我比较了内容,没有区别。
猜你喜欢
  • 1970-01-01
  • 2011-08-29
  • 1970-01-01
  • 2012-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多