Ich habe einen WebApiController, die zwei Get-Methode implementiert: eine, die keinen Parameter und die andere Methode einen interger Parameter erfordert erfordert ...WebApiConfig & was ist der Unterschied zwischen Routen
//Get api/<controller>
public IEnumerable<EmployeeVM> Get()
{
List<EmployeeVM> list = new List<EmployeeVM>()
{
new EmployeeVM(){
FullName = "Milton Waddams"
},
new EmployeeVM(){
FullName = "Andy Bernard"
}
};
return list;
}
//Get api/<controller>
public string Get(int id)
{
return "value";
}
Wenn ich das verwenden folgende Konfiguration in meiner WebApiConfig Klasse,
configuration.Routes.MapHttpRoute("API Default", "api/{controller}/{id}", new { id = RouteParameter.Optional });
dann würde ich die folgende Fehlermeldung erhalten:
Jetzt"The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.String Get(Int32)' in 'AngularForMVC.Controllers.EmployeeWebApiController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter."
wenn ich das diese folgende Konfiguration:
configuration.Routes.MapHttpRoute("API Default", "api/{controller}/{action}/{id}", new { id = RouteParameter.Optional });
dann funktioniert es. Ich kann die Methode Get() ohne Fehler ausführen.
Was ist der Unterschied? Warum funktioniert der zweite Code-Verweis? Ich weiß, dass ich dem URL-Pfad eine {action} hinzugefügt habe, aber selbst wenn ich den {action} Pfad zur URL nicht angegeben hätte, sollte dies trotzdem funktionieren.
Können Sie uns die Implementierung von Application_Start in global.asax.cs zeigen? Stellen Sie sicher, dass die Web-API-Routenregistrierung vor der MVC-Routenregistrierung aufgerufen wird. – CodeNotFound