Любой может объяснить, что может быть причинами, когда я выбрасываю HttpException, когда он всплывает, не может быть приведен из Exception.Предоставляя немного больше контекста, у меня есть общее представление бритвы с try..catch of Exception, которое вызывает дочерние представления, а в дочернем представлении я выбрасываю 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;
}
Любые идеи, заранее спасибо.