2

当我在 url 中CheckInvalidPathChars()输入一个无效字符(如<, )时,我从该方法中得到一个自动异常。>

自动检查路径,我想捕获异常以便将用户重定向到404 error页面。

我怎样才能捕捉到那个异常?

相关信息:
我正在使用Umbraco 4.9.0


我找到的解决方案:

我在项目的根目录中创建了文件 Global.asax。该文件具有“Application_Error”方法,当 URL 中有非法字符时会触发该方法。

我用以下代码编辑了这个方法:

    protected void Application_Error(object sender, EventArgs e)
    {
        Server.ClearError();
        string errorTemplate = library.RenderTemplate(nodeId);
        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.AddHeader("Content-Length", errorTemplate.Length.ToString());
        HttpContext.Current.Response.Write(errorTemplate);
        HttpContext.Current.Response.Flush();
        HttpContext.Current.Response.Close();
    }

希望这可以帮助!

4

2 回答 2

1

答案很简单——不要在 URL 中输入无效字符 :-)

但说真的,与其试图捕捉错误,不如试着阻止这些字符进入你的 URL。如果字符是由您的代码生成的,则对字符进行编码,或者在config/umbracoSettings.config文件中有一个部分,您可以在其中指定要从 Umbraco 从页面标题创建的路径中排除的字符。

我几乎总是在默认值中添加额外的字符。这可确保在您发布页面时,从 URL 路径中删除所有无效字符。

于 2013-08-20T14:54:21.833 回答
0

我会为它使用一个 try-catch 块:

try
{
    // code that could throw the exception - probably when you call the CheckInvalidPathChars() method
}
catch (Exception e)
{
    // exception code
}

https://stackoverflow.com/a/1177444/2402338上,您可以找到有关如何捕获特定异常的答案。

于 2013-08-20T11:47:19.973 回答