3

我正在尝试获取我们构建的自定义 404 页面来显示,而不是服务器创建的默认 404 页面。它在本地调试应用程序时按预期工作,但在服务器上运行应用程序时却不行。他们的 web.config 文件看起来完全一样。

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

奇怪的是,当任何关于 的内容被修改时 - 将模式设置为“关闭”或“RemoteOnly”,将“~/Error”更改为“错误”,或完全删除该部分 - 结果总是相同的:我明白了本地看起来不错的 404 页面,但不在服务器上。

在本地调试时,此方法按预期执行:

    public class ErrorController : BaseController
    {
        [AcceptVerbs(HttpVerbs.Get)]
        public ActionResult NotFound()
        {
            Response.StatusCode = (int)HttpStatusCode.NotFound;
            ErrorSignal.FromCurrentContext().Raise(new HttpException(404, Request.Url.PathAndQuery + " was not found"));
            return View();
        }
    }

因为它在 Global.asax 中找到了这条路线:

routes.MapRoute(
"NotFound",
"{*path}",
    new { controller = "Error", action = "NotFound" });

任何和所有的建议表示赞赏。

4

3 回答 3

3

问题已解决 - 我去找管理 IIS 设置的人,让他将 404 的错误页面路径更改为重定向到 URL,该 URL 为“/Error/NotFound/Index.aspx”。但显然,这相当于将其添加到 system.webServer 部分:

<httpErrors>
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" prefixLanguageFilePath="" path="/Error/NotFound" responseMode="ExecuteURL" />
</httpErrors>
于 2011-11-08T15:12:24.843 回答
1

在我看来,您在服务器上获得的 404 是因为找不到您的自定义 404。您可以浏览到自定义 404 吗?

于 2011-11-04T15:40:32.730 回答
0

您的服务器上的 iis 是否没有以集成模式运行?如果是404s就永远打不到asp.net 什么版本的iis?确保它不在经典模式下。

于 2011-11-04T16:28:40.920 回答