C # MVC5 включить пользовательскую страницу ошибки в главную страницу - PullRequest
1 голос
/ 01 июля 2019

у нас есть несколько c# mvc5 приложений. Чтобы иметь централизованную точку обработки необработанных исключений, я хотел бы иметь собственную страницу ошибок на своей главной странице и использовать global.asax (в каждом приложении) для перенаправления на ~Shared/Error в случае необработанного исключения, вызванного в любом из моих приложений.

  • добавлено Error.cshtml в мою общую папку на главной странице
  • добавлено ActionResult Error() к SharedController.cs на главной странице
namespace MasterpageMvc.Controllers
{
    [Localizable]
    public class SharedController : Controller
    {
        private SharedViewModel SharedViewModel { get; } = new SharedViewModel();

        ...

        public ActionResult Error()
        {
            return View();
        }

    }
}
  • сделал NugetPack из моей мастер-страницы и добавил NugetPack в мой AppX
  • отключено добавление фильтра ошибок (AppX)
namespace ApplicationX
{
    public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            //filters.Add(new HandleErrorAttribute());
        }
    }
}
  • добавлено Application_Error в global.asax.cs (AppX)
namespace ApplicationX
{

    public class MvcApplication : System.Web.HttpApplication
    {

        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }

        protected void Application_Error()
        {
            // Log error to eventlog using NLog
            // ...

        }
    }
}
  • перенаправил пользовательскую ошибку в web.config (AppX) в ~ / Shared / Error
<system.web>
    <customErrors mode="On" defaultRedirect="~/Shared/Error">
      <error statusCode="404" redirect="~/Shared/Error" />
    </customErrors>
  </system.web>

Ошибка, которую я получаю:

System.InvalidOperationException: The view 'Error' or its master was not found or no view engine supports the searched locations. The following locations were searched:
~/Views/Home/Error.cshtml
~/Views/Shared/Error.cshtml
~/Views/Shared/Masterpage/Error.cshtml

Любая помощь высоко ценится! TIA acki

1 Ответ

0 голосов
/ 01 июля 2019

Введите в своем действии имя представления, и если вам нужно имя главной страницы в качестве второго аргумента

 public ActionResult Error()
 {
            return View("Errors");
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...