ASP.Net MVC HandleError выбрасывает 500 Внутренняя ошибка сервера

У меня есть следующий фильтр HandleError на моем контроллере:

[HandleError (ExceptionType = typeof (ArgumentException), View = "DestinationError")]

Я настроил Web.Config так, чтобы были включены customErrors. У меня проблема в том, что фильтр HandleError работает нормально, когда я запускаю приложение локально из Visual Studio, но при развертывании его на сервере все, что я получаю, это 500 Internal Server Error, указывающее, что представление Error не может быть нашел.

Кто-нибудь сталкивался с этим раньше, я подозреваю, что причиной проблемы может быть маршрутизация (hoho). Сайт развертывается в каталоге в корневом веб-каталоге, а не в самом wwwroot, поэтому, возможно, IIS не может найти файл ошибок.

10.12.2008 12:05:20
4 ОТВЕТА

Чтобы ответить на мой собственный вопрос, магия заключается в отключении ошибок HTTP в IIS. Я не рад этому обходному пути, поэтому, если у кого-то есть идеи получше, я бы хотел их услышать.

3
10.12.2008 12:42:46

Что делать, если вы попробуете следующее?

Response.TrySkipIisCustomErrors = true;
0
5.08.2009 02:43:19

В противном случае вы можете использовать конфигурацию Web.Config и установить для нее ожидаемые действия контроллера. Нравится:

    <customErrors mode="On" defaultRedirect="/Error">
        <error statusCode="404" redirect="/Error/NotFound"/>
    </customErrors>

Затем представьте, что у вас есть контроллер ошибок (/ Error), который указывает на действие индекса

public class ErrorController : Controller
{
    [AcceptVerbs(HttpVerbs.Get)]
    public ActionResult Index()
    {
        Response.StatusCode = (int)HttpStatusCode.InternalServerError;
        return View("Index");
    }

    [AcceptVerbs(HttpVerbs.Get)]
    public ActionResult NotFound()
    {
        Response.StatusCode = (int)HttpStatusCode.NotFound;
        return View("NotFound");
    }
}
3
6.08.2009 01:04:04

У меня была такая же проблема после перехода на MVC 3 RC. Удалось обойти это, добавив макет / главную страницу.

@inherits System.Web.Mvc.WebViewPage<System.Web.Mvc.HandleErrorInfo>

@{
    View.Title = "Error";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

Теперь внутренняя ошибка сервера исчезла, но я думаю, что это где-то ошибка.

0
8.12.2010 09:50:23