2

我的控制器上有以下 HandleError 过滤器:

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

我已经设置了 Web.Config 以便开启 customErrors。我遇到的问题是 HandleError 过滤器工作正常,当我在 Visual Studio 本地运行应用程序时,但是当我将它部署到服务器时,我得到的只是 500 内部服务器错误,表明错误视图不能成立。

有没有人遇到过这个问题,我怀疑路由可能是问题的根本原因(hoho)。该站点被部署到 Web 根目录中的目录,而不是 wwwroot 本身,因此 IIS 可能无法找到错误文件。

4

4 回答 4

3

要回答我自己的问题,神奇的是关闭 IIS 中的 HTTP 错误。我对这种解决方法并不满意,所以如果有人有更好的想法,我很想听听。

于 2008-12-10T12:42:46.840 回答
3

否则,您可以使用 Web.Config 配置并将其设置为预期的控制器操作。像这样:

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

然后想象你有一个错误控制器(/错误),它指向一个索引操作

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");
    }
}
于 2009-08-06T01:04:04.173 回答
0

迁移到 MVC 3 RC 后我遇到了同样的问题。通过添加布局/母版页设法解决它。

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

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

现在内部服务器错误消失了,但我认为这是某个地方的错误。

于 2010-12-08T09:50:23.313 回答
0

如果您尝试以下方法怎么办?

Response.TrySkipIisCustomErrors = true;
于 2009-08-05T02:43:19.707 回答