C# 如何捕获CheckInvalidPathChars()异常
当我在url中放入类似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
的无效字符时,我会从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方法结合使用,该方法在路径包含非法字符时触发。