Ich lerne Angular 2 und versuche, es auf einem ASP MVC-Setup auszuführen. Ich folge dieser sehr guten Anleitung: https://www.codeproject.com/Articles/1181888/Angular-in-ASP-NET-MVC-Web-API-PartASP MVC Web API-Endpunkt, der 404 zurückgibt
Ich habe es sehr leicht modifiziert. Das Original soll eine Liste von Namen manipulieren, die von der Datenbank über den API-Endpunkt api/userapi
erhalten wurden. Ich habe es so geändert, dass es zu einer Liste von Posts (wie für einen Blog oder etwas) vom Endpunkt api/postapi
wird. Der eckige Teil des Projekts funktioniert so weit. Es ist der Teil von ASP.NET, der nicht richtig funktioniert.
Mit Blick auf die Konfiguration des ursprünglichen Projekts (die ich von diesem Link heruntergeladen und in Visual Studio 2017 getestet, um in Ordnung zu sein) und vergleichen mit meinem Experiment, konnte ich nicht erkennen, wo ich falsch konfiguriert haben könnte es.
Was könnte das Problem hier sein? Hier ist mein Code für die Web-API-Teil:
Global.asax.cs
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
namespace WebAPI
{
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
}
RouteConfig.cs
using System.Web.Mvc;
using System.Web.Routing;
namespace WebAPI
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{*anything}", // I am suspicious of this line but changing it doesn't fix it
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
WebApiConfig.cs
using System.Net.Http.Headers;
using System.Web.Http;
namespace WebAPI
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Output as JSON instead of XML
config.Formatters.JsonFormatter.SupportedMediaTypes
.Add(new MediaTypeHeaderValue("application/octet-stream"));
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
PostsAPIController.cs
using WebAPI.Models;
using System.Data.Entity;
using System.Linq;
using System.Net.Http;
using System.Web.Http;
namespace WebAPI.Controllers
{
[RoutePrefix("api/postapi")] //this did not help either
public class PostsAPIController : BaseAPIController
{
public HttpResponseMessage Get()
{
return ToJson(_db.TWebSitePostsSet.AsEnumerable());
}
public HttpResponseMessage Post([FromBody]TWebSitePosts value)
{
_db.TWebSitePostsSet.Add(value);
return ToJson(_db.SaveChanges());
}
public HttpResponseMessage Put(int id, [FromBody]TWebSitePosts value)
{
_db.Entry(value).State = EntityState.Modified;
return ToJson(_db.SaveChanges());
}
public HttpResponseMessage Delete(int id)
{
_db.TWebSitePostsSet.Remove(_db.TWebSitePostsSet.FirstOrDefault(x => x.PostId == id));
return ToJson(_db.SaveChanges());
}
}
}
müssen Sie hier Winkel Code für API-Aufruf gesetzt richtige Antwort geben .... –
in Endpunkten verpasst https Verb Rest Anruf identifizieren> [HttpGet] [Httppost] ..... –
Ich würde aber Es ist eine Menge Code und es hat nichts damit zu tun, warum die API selbst 404 zurückgibt, wenn man direkt darauf zugreift. –