C# 无法将异常强制转换为HttpException
任何人都可以解释我抛出HttpException的原因,当它冒泡时,不能从异常中抛出。 再加一点上下文,我有一个带有try..catch of Exception的通用razor视图,它调用children视图,在children视图中我抛出了HttpException。 问题在于,在泛型视图中,当引发异常时,异常不能强制转换为HttpException。 这只发生在测试环境中,在我的本地机器中,这是有效的(正如预期的那样) 代码: 儿童视图:C# 无法将异常强制转换为HttpException,c#,asp.net,asp.net-mvc,exception-handling,C#,Asp.net,Asp.net Mvc,Exception Handling,任何人都可以解释我抛出HttpException的原因,当它冒泡时,不能从异常中抛出。 再加一点上下文,我有一个带有try..catch of Exception的通用razor视图,它调用children视图,在children视图中我抛出了HttpException。 问题在于,在泛型视图中,当引发异常时,异常不能强制转换为HttpException。 这只发生在测试环境中,在我的本地机器中,这是有效的(正如预期的那样) 代码: 儿童视图: ... } else {
...
}
else
{
throw new HttpException(400,"Not Found");
}
一般视图
try
{
@Html.CachedPartial(moduleItem.DocumentTypeAlias, moduleItem, 60 * 60 * 24 * 365,
contextualKeyBuilder: (model, viewData) => { return string.Format("{0}|{1}", moduleItem.Id, Request.QueryString); },
viewData: ViewData)
}
catch (Exception ex)
{
//the ex.GetType() is Exception when HttpException is raised
if (ex != null && ex.GetType()== typeof(HttpException))
{
var httpExp = ex as HttpException;
var code = httpExp.GetHttpCode();
if (code == 400)
{
HttpContext.Current.Response.StatusCode = (int)HttpStatusCode.NotFound;
var xpathQuery = String.Format("//error404");
var umbracoHelper = new UmbracoHelper(UmbracoContext.Current);
var contentService = umbracoHelper.TypedContentAtXPath(xpathQuery);
var culture = System.Threading.Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName;
var moduleItem404 = contentService.FirstOrDefault(x=> x.GetCulture().TwoLetterISOLanguageName== culture);
@Html.CachedPartial(moduleItem404.DocumentTypeAlias, moduleItem404, 60 * 60 * 24 * 365,
contextualKeyBuilder: (model, viewData) => { return string.Format("{0}|{1}", moduleItem404.Id, Request.QueryString); },
viewData: ViewData)
}
else
{
throw ex;
}
}
else
{
throw ex;
}
任何想法,请提前感谢。您可以使用此代码捕获不同类型的异常
try {
// code
}
catch (HttpException ex){
// code
}
catch (Exception ex){
// code
}
嗨,Artur,我知道,问题是捕获(HttpException)没有被捕获,HttpException被捕获为异常…@RuiEstreito可能它抛出了其他类型的异常。你能在调试器中检查它吗?我已经检查过了,并且所有的异常属性都为空,我无法调试,因为问题出现在登台环境中,在我的本地机器上工作正常,如果我发现不同的异常,问题是相同的。