C# 如何捕获CheckInvalidPathChars()异常

C# 如何捕获CheckInvalidPathChars()异常,c#,exception-handling,umbraco,C#,Exception Handling,Umbraco,当我在url中放入类似的无效字符时,我会从CheckInvalidPathChars()方法中自动获得一个异常 路径是自动检查的,我希望捕获异常,以便将用户重定向到404错误页面 我怎样才能抓住那个例外 相关信息: 我正在使用Umbraco 4.9.0 解决方案我发现: 我在项目的根目录中创建了Global.asax文件。除其他外,该文件具有“Application_Error”方法,当URL中存在非法字符时,将触发该方法 我使用以下代码编辑了此方法: protected void A

当我在url中放入类似
的无效字符时,我会从
CheckInvalidPathChars()
方法中自动获得一个异常

路径是自动检查的,我希望捕获异常,以便将用户重定向到
404错误
页面

我怎样才能抓住那个例外

相关信息:
我正在使用
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();
    }

希望这有帮助

我会使用try-catch块:

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

在上面,您可以找到关于如何捕获特定异常的答案

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

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


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

也许我没有正确解释这个问题。我知道使用try/catch可以控制异常。问题是Umbraco正在某处执行CheckInvalidPathChars(),我无法在那里进行尝试/捕获。在这种情况下,我如何控制它?我认为应该查找的位置不在Umbraco代码中。我觉得ASP.NET正在运行这个方法。我浏览了Umbraco 4.9.0源代码,在VS中搜索没有发现CheckInvalidPatchChars()。也许下面的问题会有帮助:谢谢,这让我想到了在应用程序中使用global.asax.cs\u Error method!:)很高兴我能为你指出正确的方向!如果您找到了解决方案,请继续,并将其添加到此处,以供其他可能有相同问题的人使用!:)问题是我无法控制用户在浏览器上键入的内容;)我找到的解决方案是将Global.asax.cs与Application_Error方法结合使用,该方法在路径包含非法字符时触发。