I Attribut mit Web-API-Routing verwenden bin, und alles funktioniert wie erwartet, wenn ich die URL anfordern /MyApi/Liste mit den folgenden Controller:Standardroute bei der Verwendung von ASP.NET MVC Attribute Routing
[RoutePrefix("myapi")]
public class MyController : ApiController
{
[HttpGet]
[Route("list")]
public async Task<string> Get()
{
// Return result
}
}
Allerdings würde ich meine Get() Methode, wie der Standard, das heißt, wenn die /MyApi (ohne /Liste Teil) URL anfordern.
Aber wenn ich die "Liste" Teil der Strecke Attribute wie so entfernen ...
[RoutePrefix("myapi")]
public class MyController : ApiController
{
[HttpGet]
[Route] // Default route
public async Task<string> Get()
{
// Return result
}
}
... Ich bekomme einen 403,14 Fehler sagen
"Der Webserver ist so konfiguriert, dass er den Inhalt dieses Verzeichnisses nicht auflistet."
Irgendwelche Ideen, was könnte dies verursachen?
Danke!
Edit: Wenn ich die API-Controller mit der Standardroute Muster wie /api/MyApi anfordern, es Karten zum Get() Methode wie erwartet.
Standardroute ist nach dem Attribut Routen registriert:
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
Haben Sie ein physisches/virtuelles Verzeichnis namens 'myapi'? – haim770
@ haim770 Hmm, das scheint das Problem zu sein! Wenn ich mein Routenpräfix umbenenne, funktioniert die Standardroute wie erwartet! Vielen Dank für deine Hilfe! Fühlen Sie sich frei, es als Antwort zu posten und ich werde es akzeptieren. :) –
Es erinnerte mich nur an http://Stackoverflow.com/a/24533925/1625737 - Nicht sicher, ob es als Duplikat obwohl – haim770