【发布时间】:2016-11-30 02:10:12
【问题描述】:
我正在尝试为 MVC WebApi 创建一个带有整数参数的 HTTP PUT。
我尝试遵循 HTTP PUT 的 angular 2 指南:https://angular.io/docs/ts/latest/guide/server-communication.html
我的 WebApi:
public IHttpActionResult Put([FromBody]int id)
{
return Ok();
}
我的 Http PUT 在我的 ionic 2 应用程序中的服务中:
makePut(){
let body = JSON.stringify({id:155320});
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return new Promise(resolve => {
this.http.put('API_URL', body, options)
.subscribe(
response => {
console.log(response.text());
},
error => {
//Failed to Login.
alert(error.text());
console.log(error.text());
});
});
}
最后是从我的主页调用我的服务:
this.service.makePut().then(data => {console.log(data);});
当我运行它时,我得到一个不允许的 405 方法。我有什么遗漏吗?
这里的更新是我的 web api 中 web.config 的一部分:
<system.webServer>
<security>
</security>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
</modules>
<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>
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
【问题讨论】:
-
你为什么要把你的身体对象串起来? “让 body = JSON.stringify({id:155320});”而不是“让 body = {id:155320};” ?
-
这就是文档中的内容:angular.io/docs/ts/latest/guide/server-communication.html 但我不需要它。我更新了我的答案。
标签: asp.net-web-api angular ionic-framework ionic2 http-put