Код бритвы на странице cshtml (ошибка) приводит к ошибке - PullRequest
0 голосов
/ 14 января 2012

выкидываю 404 ошибку из приложения.Страница для ошибки 404 находится в /ErrorPages/Error_404.cshtml В этом файле у меня есть только HTML-код, и он отлично работает.Но если я добавлю какой-нибудь код бритвы, он выдаст ошибку конфигурации в браузере.Я добавляю например макет или некоторые @Html.ActionLink(...Это ошибка:

Ошибка выполнения

Описание: на сервере произошла ошибка приложения.Текущие пользовательские настройки ошибок для этого приложения предотвращают просмотр сведений об ошибке приложения.

Подробно: Чтобы детали этого конкретного сообщения об ошибке можно было просматривать на локальном сервере, создайте тег в файле конфигурации «web.config», расположенном в корневом каталоге текущего веб-приложения.Для этого тега должен быть установлен атрибут «mode» «RemoteOnly».Чтобы детали были доступны для просмотра на удаленных компьютерах, установите для «mode» значение «Off».

Вот как я создаю 404:

public ActionResult Search(string searchTerm)
{
if (city == null)
            {
                throw new HttpException(404, "Some description");               
            }
            else
            {
                return RedirectToAction("Index", "Home", new
                {...
            }
}

И когда естьнет кода бритвы на странице ошибок, это работает, и если нет, я получаю сообщение сверху.Когда я устанавливаю в веб-конфигурации 'mode = Off', я получаю сообщение об ошибке:

Описание: HTTP 404. Ресурс, который вы ищете (или одна из его зависимостей), мог быть удален, имелего имя изменилось или временно недоступно.Пожалуйста, просмотрите следующий URL и убедитесь, что он написан правильно.

Запрошенный URL: / CityPage / Навигация / Поиск

Это значение из веб-конфигурации

<customErrors mode="Off">
      <error statusCode="404" redirect="\ErrorPages\Error_cp404.cshtml" />
    </customErrors>

1 Ответ

4 голосов
/ 14 января 2012

Вы не должны пытаться визуализировать страницу .cshtml напрямую. Это взгляды Бритвы. В ASP.NET MVC представления обслуживаются через действия контроллера.

Итак:

<error statusCode="404" redirect="Errors/Error404" />

где у вас может быть ErrorsController:

public class ErrorsController: Controller
{
    public ActionResult Error404()
    {
        return View();
    }
}

Вы также можете проверить следующий ответ для альтернативного способа обработки ошибок.

Вам также может понадобиться добавить следующее, если вы работаете в IIS7 +:

<system.webServer>
    ...
    <httpErrors errorMode="Detailed" />
</system.webServer>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...