Исключение не может быть приведено к HttpException - PullRequest
0 голосов
/ 18 мая 2018

Любой может объяснить, что может быть причинами, когда я выбрасываю 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;
}

Любые идеи, заранее спасибо.

1 Ответ

0 голосов
/ 18 мая 2018

Вы можете использовать этот код для отлова различных типов исключений

try {
// code
}
catch (HttpException ex){
// code
}
catch (Exception ex){
// code
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...