我正在尝试获取我们构建的自定义404页面,而不是服务器创建的默认404页面。它在本地调试应用程序时按预期工作,但在服务器上运行应用程序时则无法工作。他们的web.config文件看起来完全一样。
<customErrors mode="On" defaultRedirect="~/Error/Index">
<error statusCode="404" redirect="~/Error/NotFound" />
</customErrors>
奇怪的是,当修改任何内容时 - 将设置模式设置为“关闭”或“RemoteOnly”,将“〜/ Error”更改为“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" });
赞赏任何建议。
答案 0 :(得分:3)
问题解决了 - 我找到了管理我们IIS设置的人,并让他将404s的错误页面路径更改为重定向到URL,该URL为“/Error/NotFound/Index.aspx”。但显然,这只相当于将其添加到system.webServer部分:
<httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/Error/NotFound" responseMode="ExecuteURL" />
</httpErrors>
答案 1 :(得分:1)
听起来像你在服务器上获得的404是因为无法找到自定义404。您是否可以浏览自定义404?
答案 2 :(得分:0)
服务器上的iis是否未在集成模式下运行?如果是这样404s永远不会打到asp.net 什么版本的iis?确保它不是经典模式。