RoutePrefix vs Itinéraire
Je comprends que RoutePrefix
ne pas ajouter un itinéraire à la table de routage par lui-même. Sur vos actions, vous devez avoir un Route
attribut déclaré. Je vais avoir un moment difficile de trouver une autorité blog/page msdn/quelque chose que les états pourquoi par defalut RoutePrefix
ne pas ajouter un itinéraire à la table de routage.
Quelqu'un aurait-il une autorité de post qui ne contiennent que cela soit le cas, et si vous aussi laissez-moi savoir qui il est. Je vous remercie beaucoup.
Modifier
Pour Préciser ma question
NE FONCTIONNE PAS
[RoutePrefix("api/Steve")]
public class SteveController : ApiController
{
public int get(){return 1000000;}
}
Œuvres
[RoutePrefix("api/Steve")]
public class SteveController : ApiController
{
[Route("")]
public int get(){return 1000000;}
}
Le scénario ci-dessus fonctionne, car nous indiquait explicitement que le get
action sur le SteveController
a un vide itinéraire. Une fois que nous n'avons que de la route est ajoutée à la RouteTable
Le premier scénario ne fonctionne pas, tout simplement parce qu'à l'aide de RoutePrefix
ne pas ajouter quoi que ce soit à la table de routage. RoutePrefix
en lui-même ne génère pas un itinéraire.
Cela semble être commun de connaissances, je veux savoir une source qui explique pourquoi c'est. Préférable Respecté membre de la communauté je.e Jon Skeet ou quelqu'un dans l'équipe de Microsoft.
OriginalL'auteur gh9 | 2016-04-11
Vous devez vous connecter pour publier un commentaire.
Route préfixes sont associés à des voies de par sa conception dans l'attribut de routage.
Il est utilisé pour définir un préfixe commun pour l'ensemble d'un contrôleur.
Si vous lisez les notes de version qui introduit la fonctionnalité que vous pouvez obtenir une meilleure compréhension du sujet.
ASP.NET Web API 2
Ce qui est Nouveau dans ASP.NET l'API Web 2.1
Ce qui est Nouveau dans ASP.NET l'API Web 2.2
Un très bon article sur le sujet
ASP.NET 5 Plongée Profonde: Routage
Alors que pas un expert sur le sujet, ici, c'est ma compréhension de la façon dont cela fonctionne.
Avec l'attribut de routage le cadre inspecte la route de l'attribut sur les actions d'un contrôleur afin de créer un itinéraire entrées à ajouter à la table de routage. Donc, tant que vous utilisez l'attribut de routage que vous allez être en utilisant le
[RouteAttribute]
. Sans cet attribut, l'action par défaut sera de retour à la convention de routage. LeRoutePrefixAttribute
est un point d'extensibilité qui permet plus de contrôle sur la façon dont vous définissez vos itinéraires/Url. Les notes de version en dire autant.Autre que ma compréhension et le dernier lien fourni, tout le reste a été cité à partir de MS documentation.
Mais la définition de la
RoutePrefix
fondamentalement déjà explique pourquoi il ne fonctionne qu'avec une déroute. Il est utilisé pour stockercommon
préfixe parmi les itinéraires dans le contrôleur.ma question n'est pas pourquoi cela fonctionne. C'est je voudrais voir un peu de la source qui indique que. À ma connaissance et googlefu il est seulement commun de l'information que tout le monde l'a fait.
OriginalL'auteur Nkosi
Pour une source de référence, voici la description de MSDN (l'emphase est mienne).
RouteAttribute
RoutePrefixAttribute
Comme vous pouvez le voir, la description de
Route
mentionne d'exposer l'action(s), maisRoutePrefix
ne le fait pas.OriginalL'auteur Robert Dennis