J'essaie d'obtenir la balise Attribute d'un contrôleur API afin que je puisse voir quel verbe HTTP il autorise à l'exécution. De l'exemple de code ci-dessous, je veux être en mesure d'obtenir le tag [HttpGet]
.Récupère la balise Attribute d'une méthode de contrôleur dans MVC?
[HttpGet]
public void MyResource()
{
// Controller logic
}
J'utilise actuellement System.Reflection
pour recueillir d'autres informations sur mon API en cours d'exécution, mais jusqu'à présent, je suis incapable de récupérer la balise [HttpGet
et d'autres Http
balises de verbe. J'ai essayé chacune des solutions ci-dessous sans succès:
public void GetControllerMethodHttpAttribute()
{
MethodInfo controllerMethod = typeof(TestController).GetMethods().First();
// Solution 1
var attrs = controllerMethod.Attributes;
// Solution 2
var httpAttr = Attribute.GetCustomAttributes(typeof(HttpGetAttribute));
// Solution 3
var httpAttr2 = Attribute.GetCustomAttribute(controllerMethod, typeof(HttpGetAttribute));
// Solution 4
var httpAttr3 = Attribute.IsDefined(controllerMethod, typeof(HttpGetAttribute));
}
Toutes les questions précédentes que j'ai fait des recherches sur ce sujet uniquement lié à Custom Attribute tags
et en tirant les valeurs de ceux-ci, mais je ne pouvais pas trouver toute information sur l'obtention du cadre inclus Attribute tags
.
Est-ce que quelqu'un sait comment je peux obtenir l'étiquette d'attribut [HttpGet]
?
Merci!
Avez-vous besoin de "cette action prend en charge get/post/etc", ou les informations complètes à l'intérieur des attributs (ordre, template, etc)? – gunr2171
Avez-vous vérifié que 'typeof (TestController) .GetMethods(). First()' renvoie la méthode attendue? – thehennyy
@ gunr2171 l'information complète serait préférable, mais le plus important, je veux être en mesure de dire quels verbes chaque méthode prend en charge. –