में अपवाद फ़िल्टर का उपयोग कैसे करें मैं एमवीसी 5 में अपवाद फ़िल्टर कैसे कार्यान्वित कर सकता हूं।एमवीसी 5
मैं NLog को अपवाद फेंक और एक डिफ़ॉल्ट त्रुटि पृष्ठ जो प्रदर्शित करता है "कुछ गलत हो गया है"
मैं के रूप में
using System;
using System.Diagnostics;
using System.Security.Policy;
using System.Web.Mvc;
using System.Web.Mvc.Filters;
using System.Web.Routing;
using System.Web.UI.WebControls;
using Delivros.UI.Controllers;
using Delivros.UI.Areas.User.ViewModel;
using System.Web;
namespace Delivros.UI.Filters
{
public class CustomAuthenticationFilter : IAuthenticationFilter
{
public void OnAuthentication(AuthenticationContext filterContext)
{
}
public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext)
{
Debug.WriteLine("OnAuthenticationChallenge : MyAuthenticationFilter");
}
}
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class MyAuthorizationFilter : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext.RequestContext.HttpContext.Request.Cookies[System.Configuration.ConfigurationManager.AppSettings[Convert.ToString(CookieField.cookieName)]] == null)
{
}
else
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary
{
{ "controller", "User" },
{ "action", "UserRegistration" } ,
{"Area","User"}
});
}
}
}
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class CustomActionFilter : ActionFilterAttribute
{
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false);
filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
filterContext.HttpContext.Response.Cache.SetNoStore();
base.OnResultExecuted(filterContext);
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary
{
{ "controller", "User" },
{ "action", "UserRegistration" } ,
{"Area","User"}
});
// ActionResult home = new HomeController().Index();
}
}
public class MyResultFilter : IResultFilter
{
public void OnResultExecuting(ResultExecutingContext filterContext)
{
}
public void OnResultExecuted(ResultExecutedContext filterContext)
{
}
}
public class MyExceptionFilter : IExceptionFilter
{
public void OnException(ExceptionContext filterContext)
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary
{
{ "controller", "User" },
{ "action", "UserLogOut" } ,
{"Area","User"}
});
}
}
}
इस प्रकार एक फिल्टर वर्ग के लिए पेज रीडायरेक्ट करना चाहते हैंलेकिन कुछ भी नहीं पृष्ठ पर रीडायरेक्ट कर रहा है ...
मुझे इस कक्षा को NLogExceptionHandlerAttribute कहां रखना चाहिए? – TechNo
@SajnaAli यह सिर्फ एक विशेषता है, एमवीसी में अन्य सभी विशेषताओं के समान है, इसलिए इसे एक क्रिया, नियंत्रक के खिलाफ रखा जा सकता है या आप इसे विश्व स्तर पर पंजीकृत कर सकते हैं (जो आप चाहते हैं)। मैंने एक उदाहरण दिया है कि आप यह कैसे करते हैं। – James
global.asax फ़िल्टरकॉन्फिग में पंजीयन में पहले से ही एक पंक्ति है। रजिस्ट्रार ग्लोबल फ़िल्टर (ग्लोबल फ़िल्टरर्स। फ़िल्टर); क्या हमें वैश्विक.एक्सएक्स फ़ाइल में ऊपर उल्लिखित रेखा जोड़नी चाहिए? यह त्रुटियों को दिखा रहा है – TechNo