C# 无法将异常强制转换为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 {

任何人都可以解释我抛出HttpException的原因,当它冒泡时,不能从异常中抛出。 再加一点上下文,我有一个带有try..catch of Exception的通用razor视图,它调用children视图,在children视图中我抛出了HttpException。 问题在于,在泛型视图中,当引发异常时,异常不能强制转换为HttpException。 这只发生在测试环境中,在我的本地机器中,这是有效的(正如预期的那样)

代码:

儿童视图:

...
 }
    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可能它抛出了其他类型的异常。你能在调试器中检查它吗?我已经检查过了,并且所有的异常属性都为空,我无法调试,因为问题出现在登台环境中,在我的本地机器上工作正常,如果我发现不同的异常,问题是相同的。