2012-01-14 1 views
0

Я бросаю ошибку 404 из приложения.
Страница для 404 ошибка в /ErrorPages/Error_404.cshtml В этом файле у меня есть только HTML-код, и он отлично работает.
Но если я добавлю некоторый код бритвы, он вызывает ошибку конфигурации в браузере.
добавить, например макет или некоторые @Html.ActionLink(...
Это ошибка:Код бритвы в cshtml (ошибка) страница произведите ошибку

Runtime Error

Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed.

Details: To enable the details of this specific error message to be viewable on the local server machine, please create a tag within a "web.config" configuration file located in the root directory of the current web application. This tag should then have its "mode" attribute set to "RemoteOnly". To enable the details to be viewable on remote machines, please set "mode" to "Off".

Это, как я произвожу 404:

public ActionResult Search(string searchTerm) 
{ 
if (city == null) 
      { 
       throw new HttpException(404, "Some description");    
      } 
      else 
      { 
       return RedirectToAction("Index", "Home", new 
       {... 
      } 
} 

И когда нет бритвы код в страницу ошибки оно работает, и если нет, я получаю сообщение сверху.
Когда я устанавливаю в веб-конфигурации «режим = Off», то я получаю сообщение об ошибке:

Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.

Requested URL: /CityPage/Navigation/Search

Это значение из веб-конфигурации

<customErrors mode="Off"> 
     <error statusCode="404" redirect="\ErrorPages\Error_cp404.cshtml" /> 
    </customErrors> 
+2

Установите пользовательские ошибки Выкл в web.config и сказать нам реальное сообщение об ошибке. – Judo

+0

@ Если он отключает пользовательские ошибки, система не будет отображать страницу сообщений об ошибках, но покажет стек исключений по умолчанию. 1110, вы должны отладить эту страницу и показать нам фактическую ошибку – archil

+0

Я обновил свой вопрос на основе ваших комментариев. – 1110

ответ

4

Вы не должны пытаться вынести .cshtml страницу непосредственно. Это взгляд Бритвы. В представлениях ASP.NET MVC используются через действия контроллера.

Итак:

<error statusCode="404" redirect="Errors/Error404" /> 

, где вы могли бы ErrorsController:

public class ErrorsController: Controller 
{ 
    public ActionResult Error404() 
    { 
     return View(); 
    } 
} 

Вы также можете чекаут following answer альтернативный способ обработки ошибок.

Также может понадобиться добавить следующее, если вы работаете в IIS7 +:

<system.webServer> 
    ... 
    <httpErrors errorMode="Detailed" /> 
</system.webServer> 
+0

Ваш ответ в связанной ссылке решает проблему. Благодарю. Мне казалось, что бритвенные страницы могут работать без класса контроллера. – 1110

Смежные вопросы