ASP.net WebApi POST возвращает ошибку 405
Я создаю приложение Angular 5 с бэкэндом asp.net. Я хочу отправить запрос POST, я протестировал его через Postman, и он работает абсолютно нормально, однако, когда я пытаюсь сделать это внутри Angular, я получаю ошибку 405. Я использую HttpClient с заголовками: новые HttpHeaders({ 'Content-Type': 'application/json' }), так же, как Postman.
Я пытался изменить web.config
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*"/>
<add name="Access-Control-Allow-Headers" value="Origin, Authorization, X-Requested-With, Content-Type, Accept"/>
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS"/>
</customHeaders>
</httpProtocol>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule"/>
</modules>
<handlers>
<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>
</system.webServer>
но, похоже, это не работает.
Угловой POST-код (с заголовками: новые HttpHeaders ({'Content-Type': 'application / json'})
setDopuskItem(itemToSave: DopuskItem){
let endpoint = this._dopuskApiUrl + 'set';
let body = JSON.stringify(itemToSave);
return this.http.put(
endpoint,
body,
httpOptions)
.catch(this.handleError);
}
1 ответ
Это потому, что браузеры отправляют предварительный запрос перед отправкой основного запроса.
Вы можете добавить следующий код в ваше приложение webapi: global.asax.cs
protected void Application_BeginRequest()
{
if (Request.HttpMethod == "OPTIONS") {
Response.Flush();
}
}