Wie man Action-und Controller-Namen in ASP.Net Kern MVC-app?
Wie man Action
und Controller
Namen in ASP.Net MVC Core RC1
Anwendung in Startup.cs
?
Will ich schaffen, eine middleware und Protokoll-Informationen (ich möchte zu Protokoll ausführliche Antwort zu meiner Datenbank, also ich brauche Action und Controller-info.) nach folgenden code in configure
Methode der startup.cs
-
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=User}/{action=Index}/{id?}");
});
//Want to get Action and controller names here..
- Ich denke, Sie überschreiben sollten, die
route middleware
zu tun, können Sie nicht fügen Sie einemiddleware
nach es es zu nicht aufgerufen werden. - können Sie erläutern Ihren Standpunkt?
- Nach dem Lesen der code-gepostet von @Clint B, kann man seinen
middleware
es tut, was Sie tun wollen. Sie müssen es vorUseMcv
im Stapel. Es funktioniert auf Antwort.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werden Sie wollen, um zu injizieren, die
IActionDescriptorCollectionProvider
service in der middleware. Sie können die EigenschaftActionDescriptors.Items
um eine Liste derActionDescriptor
, die alle route-Werten für diese Aktion. Wenn Sie umwandeln, dass bisControllerActionDescriptor
, haben Sie Zugang zuControllerName
undActionName
.Dies ist, wie ich es in meine eigene exception-handler middleware.
Wenn Sie möchten, um eine Arbeitskopie der middleware-Projekt, hier ist der link
CustomExceptionHandler
EDIT:
Sie können auch Ihre Anmeldung in eine Aktion filter. Die OnActionExecuting () - Methode des action-filters hat ActionExecutingContext parameter. Mit diesem parameter können Sie alle Arten von Informationen über die Anfrage. Unten ist, wie Sie erhalten würden, controller und action Namen. Und ich würde vorschlagen, tun Sie es in einem separaten thread zu helfen, mit Reaktionsfähigkeit.
app.UseMiddleware()
vorapp.UseMvc()