So habe ich bereits 1 Web API eingerichtet und funktioniert gut, aber jetzt, wo ich versuche, mein eigenes Admin-Panel (was ich getan habe), muss ich die verwenden DeleteUser()
Funktion von der Web-API mit dem Namen AdminApi
, aber ich kann nicht scheinen, es funktioniert zu bekommen. Ich bekomme 404 Fehler, während ich den Pfad gebe, auf dem die API sein sollte.ASP.Net Web API 404 Fehler auf der 2. API
Web Api Config:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
Global:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
//Create the custom role and user
RoleActions roleActions = new RoleActions();
roleActions.AddUserAndRole();
}
AdminApi:
[Authorize(Roles = "admin")]
public class AdminApiController : ApiController
{
public string test()
{
return "test";
}
[HttpPost]
public string DeleteUser(string id)
{
ApplicationDbContext db = new ApplicationDbContext();
var user = db.Users.Find(id);
if (user != null)
{
string email = user.Email;
db.Users.Remove(user);
return "Succesfully deleted user : " + email;
}
else
return "Failed to delete user.";
}
}
Ajax:
function deleteUser (id)
{
$.ajax({
url: '../api/AdminApi/DeleteUser',
type: 'POST',
contentType: "application/json",
dataType: 'json',
data: JSON.stringify(id),
success: function (data) {
alert(data);
},
error: function (x, y, z) {
alert(x + '\n' + y + '\n' + z);
}
});
}
Die Ajax-Funktion wird auf der Seite/Admin/AdminPage aufgerufen, um zur Web-API zu gelangen -> ../api/AdminApi und die Funktion zum Löschen von Benutzern lautet DeleteUser -> ../api/AdminApi/DeleterUser
Ich verstehe nicht, warum ich einen 404-Fehler bekomme. Ich kann verstehen, wenn meine Funktion DeleteUser
nicht funktioniert, da ich es nicht getestet habe, aber ich kann es nicht testen, wenn ich nicht in der Funktion komme.
Vorschlag löschen Operation in WEBAPI sollte "HttpDelete" vermeiden mit Post zum Löschen. – TusharJ