mk-prg-net \net \asp \ mvc \message-processing-pipeline

MVC Message Processing Pipeline

Die Verarbeitungsstufen eines Http- Request zum Http Response werden Pipeline genannt. Für ASP.NET MVC sind sie detailiert hier beschrieben.

Im Folgenden wird die Programmierung der einzelnen Stufen beschrieben.

Actionfilter

Einführung in Actionfilter- Programmierung Alternativ zu den Events der Controller- Basisklasse kann der Entwickler mit Actionfilter den Aufruf einer Action vor und nachbereiten. Für eine Action wird ein Actionfilter definiert, indem die Action mit einem speziellen Attribut ausgezeichnet wird. Die Attriubute sind von der Basisklasse System.Web.Mvc.ActionFilterAttribute abgeleitet. Die Definition eigener Actionfilter durch ableiten von System.Web.Mvc.ActionFilterAttribute ist möglich (→ z.B. Klasse MvcTools.Actionfilter.MyLoggerActionFlt)

Reihenfolge der Aktivierung der Eventhandler eines Actionfilters.

Für einzelne Actions werden Actionfilter aktiviert, indem die Actions mit ihnen attributiert werden:

[MvcTools.Actionfilter.MyLoggerActionFlt]
public ActionResult Index()
{
    return View();
}
Wird mit einem Actionfilter statt einer einzelnen Action der gesamte Controller attributiert, dann werden alle Actions des Controllers vom Filter kontrolliert.
[HandleError(View = "~/Views/Errors/Err.cshtml")]
public class CalcController : Controller
{
    [MvcTools.Actionfilter.MyLoggerActionFlt]
    public ActionResult Index()
    {
       return View();
    }
    //...
}

Die Action- Filter müssen vor ihrer Verwendung registriert werden in App_Start\FilterConfig.cs:

using System.Web;
using System.Web.Mvc;
namespace learn.asp.mvc
{
    public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new HandleErrorAttribute());
            // Konfigurieren des selbstdefinierten Filters
            MvcTools.Actionfilter.MyLoggerActionFlt.Config(Models.Logger.LoggerFactory.DefaultLogger);
        }
    }
}

Vordefinierte Filter

AuthorizeAttribute
Schränkt den Zugriff auf Actions nur für authentifizierte Benutzer ein Details hier
HandleErrorAttribut
Definiert die Views, auf die im Falle zu definierender Ausnahme umzuleiten ist, um die Ausnahme zu dokumentieren. Die Ausnahme wird im ViewData- Dictionary bereitgestellt. In der web.config muss <customerrors mode="On" defaultredirect="Error"/> eingestellt sein. Details hier
OutputCacheAttribute
Definiert, wie die Ausgaben von Actions gecacht werden. Request mit gleichen Parametern können dann über eine zu definierende Zeitspanne, mit einer für die Parameter usprünglich gerenderten Kopie aus dem Webserver- Cache beantwortet werden. Details hier