AngularJS Mit Asp.net Web-API: $http-post-Rückgabe XMLHttpRequest-Objekt kann nicht geladen werden: Antwort für preflight hat eine ungültige HTTP-Statuscode 405
Wenn Sie versuchen zu buchen, json, Asp.net web-API-server mit $http
es ist die Rückkehr der folgende Fehler
XMLHttpRequest cannot load http://localhost:62158/api/video/add.
Response for preflight has invalid HTTP status code 405
aber die gleiche Anfrage $.ajax
arbeitet-Datei.
$HTTP-Code
$http.post(url, data, config)
.success(function (data, status, headers, config) {
defered.resolve(data);
})
.error(function (data, status, header, config) {
defered.reject(data);
});
$.ajax-Code
$.ajax({ type: "POST",
url: url,
data: newVideo,
success: function (a) {
debugger;
},
error: function (e) {
debugger;
},
dataType: 'json'
});
asp.net web-api-code und Konfiguration
web.config
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
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}/{id}",
defaults: new { id = RouteParameter.Optional }
);
VideoLIbraryDb.Config.setconnection();
var formatters = GlobalConfiguration.Configuration.Formatters;
formatters.Remove(formatters.XmlFormatter);
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"));
}
API-controller
[RoutePrefix("api/video")]
public class VideoController : ApiController
{
[Route("add")]
[HttpPost]
public HttpResponseMessage add([FromBody] db_videos newVideo)
{
HttpStatusCode statusCode = HttpStatusCode.NotFound;
CommonResult result = new CommonResult() ///default
{
code = ResultCodes.retry.ToString(),
message = "Not able to complete request. Retry."
};
if (newVideo.video_file_name == null)
return Request.CreateResponse(statusCode, result);
if (newVideo.video_file_name.Length < 1)
return Request.CreateResponse(statusCode, result);
if (newVideo.insert())
{
statusCode = HttpStatusCode.OK;
result.code = ResultCodes.successfull.ToString();
result.message = "Video is added";
}
return Request.CreateResponse(statusCode, result);
}
}
gelten cors auf backend-Seite
keine Ahnung, wie es zu tun. Bitte Anleitung @Rakeschand
es ist ein cors-Problem und muss gelöst werden vom backend asp.net Seite. Sie können die Suche für Sie. Ich weiß nicht, asp sowie.
keine Ahnung, wie es zu tun. Bitte Anleitung @Rakeschand
es ist ein cors-Problem und muss gelöst werden vom backend asp.net Seite. Sie können die Suche für Sie. Ich weiß nicht, asp sowie.
InformationsquelleAutor Vikas Bansal | 2016-06-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
@Rakeschand du hattest Recht und es war die Frage der cors
Cors
Ich installiert Cors in meinem Projekt mit nu-get-Befehlszeile
und fügte den folgenden code in der WebApiConfig.cs-Datei aus App_Start-Ordner.
entfernt und die folgende von der web-config -
$http angefangen zu arbeiten, genau wie die
$.ajax
arbeiteteaber diese Dinge liessen mich mit einiger Verwirrung. Ich wäre toll, wenn jemand ausarbeiten kann
$.ajax
zu arbeiten und wurde$http
war nicht die Arbeitcors
die ich getan hatte inweb.config
dann warumcors
gearbeitet, aberweb.config
nicht?Warum web.config hat nicht geklappt? Kann mir bitte jemand erklären.
Arbeitete wie ein Charme, Dank +1
OMG Mann, ich danke Ihnen so sehr. Ich habe versucht, dies zu beheben, für 4 Stunden mit web.config-setup, und es funktionierte nicht. Vielen Dank <3
Willkommen Bruder
InformationsquelleAutor Vikas Bansal
Ich denke, Sie müssen den content-type auf deinem ajax-Aufruf:
oder
InformationsquelleAutor Tiago Gouvêa