у нас есть несколько 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