Web.configHTTP-Code 405 (Methode nicht erlaubt) wird, wenn I gesendet POST Daten in ASP.NET WebAPI CORS
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="*" />
<add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS" />
</customHeaders>
</httpProtocol>
<handlers>
<remove name="WebDAV"/>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
Regler
[EnableCors(origins: "http://domain/api/Clients", headers: "*", methods: "*")]
public class ClientsController : ApiController
{
private ParaNewnergyEntities db = new ParaNewnergyEntities();
// GET: api/Clients
public IEnumerable<Client> GetClient()
{
return db.Client.ToList();
}
[HttpPost]
public IHttpActionResult PostClient(String Username, String Password)
{
Client c = new Client
{
Username = Username,
Password = Password
};
db.Client.Add(c);
db.SaveChanges();
return Ok(c);
}
WebApiConfig.cs
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.EnableCors();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
Ajax
var sendData={
Username:"gx",
Password:"gx"
};
$.ajax({
url: "http://domain/api/Clients",
type: "POST",
data: sendData,
success: function (d) {
$("#msg").html(d);
console.log(d);
}
});
Browser-Fehler:
POST http://domain/api/Clients 405 (Method Not Allowed)
I API von GET Methode erhalten. Es ist sehr komisch, dass ich Antwort von API erhalten kann, indem POST Methode ohne Beliebiger Parameter. Ansonsten habe ich gerade http Fehler 405.
Zusätzlich bekomme ich HTTP-Fehler 405 von DELETE und PUT-Methode auch. Nur GET und Option Rückkehr httpcode 200.
ich jetzt einen Parameter verwendet haben. Der http-Code ist jetzt 415 –
Ich habe das Problem bereits gelöst. Mein Problem ist: 1. In APIController, wenn ich mehrere Parameter übergeben möchte, sollte ich sie in den einen Parameter setzen, wie Pranay sagte. Das hat mich dazu gebracht, 405 zu bekommen. 2. Ich habe ein paar Probleme mit meinen Modellattributen. Deshalb hat mein Code 500. –