Неверные URL-адреса, такие как http://localhost:54321/foo/bar, а ошибки, подобные HttpNotFound()
, обрабатываются в моем локальном хосте без проблем. После развертывания в IIS 7.5 он возвращает пустую страницу в обоих вышеперечисленных сценариях. Я видел, что у кого-то была эта проблема Здесь (Это был комментарий от Moulde с несколькими upvotes). Код:
Web.Config
<system.web>
<customErrors mode="Off" redirectMode="ResponseRedirect">
<error statusCode="404" redirect="~/Error/NotFound"/>
</customErrors>
</system.web>
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" />
<error statusCode="404" responseMode="ExecuteURL" path="/Error/NotFound"/>
<remove statusCode="500" />
<error statusCode="500" responseMode="ExecuteURL" path="/Error/Error"/>
</httpErrors>
ErrorController
public class ErrorController : Controller
{
public ActionResult NotFound() {
Response.StatusCode = 404;
Response.TrySkipIisCustomErrors = true;
return View();
}
}
RouteConfig
routes.MapRoute(
"Error - 404",
"NotFound",
new { controller = "Error", action = "NotFound" }
);
routes.MapRoute(
"Error - 500",
"Error",
new { controller = "Error", action = "Error" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
NotFound
<h2>404 Not Found</h2>
<div class="alert alert-info">
<p><strong>Whoops...</strong></p>
<p>The resource you were looking for doesn't exist</p>
</div>
Сервер работает под управлением Windows Server 2008 R2. Когда я перехожу к... /foo/bar или действие возвращает HttpNotFound()
, он возвращает пустую страницу. Есть идеи?
Главная /Test
public class HomeController: Controller{
// ...
public ActionResult Test(){
return HttpNotFound();
}
}
Update:
Когда я перехожу на /Error/NotFound
на сервере, он также возвращает пустую страницу с 404. Ответ с Fiddler:
HTTP/1.1 404 Not Found
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNetMvc-Version: 5.2
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B? QzpccWhlXFByb2plY3RzXFZlbmRvclBvcnRhbFxWZW5kb3JQb3J0YWxcRXJyb3JcTm90Rm91bmQ=?=
X-Powered-By: ASP.NET
Date: Thu, 23 Apr 2015 13:24:49 GMT
Content-Length: 5434
Обновление 2:
Если я отдержу existingResponse="Replace"
, я могу открыть Error/NotFound на сервере. Но по-прежнему была пустая страница на MyServer/MyProject/foo/bar