我正嘗試在我的Web API類中創建一個刪除功能。 我之前在使用Put和Patch Http消息時遇到了問題,因爲這些消息被鏈接到WebDAV。 更改後,修補程序和放置工作,但刪除給我的問題。WEB API 2刪除返回405
這裏是我的類:
[RoutePrefix("api/Account")]
public class AccountController : ApiController
{
//private AuthRepository _repo = null;
Orchestrate.Net.Orchestrate orchestrate = new Orchestrate.Net.Orchestrate("0b42c04c-0d70-4da8-a3c1-2036882369d0");
[..rest of class here..]
// DELETE: api/account/5
[AllowAnonymous]
[HttpDelete]
public void Delete(string username)
{
orchestrate.Delete("users", username, true);
}
}
我已經試過:
- 幾種方法的不同變體通過使用一個int作爲標識,使用IHttpActionResult
- 更改網頁刪除。 config
- 在刪除方法本身上添加路由定義
當瀏覽網頁時,我發現很多人都遇到了Web.Config文件的問題,但是我的網頁似乎很好。這是大家都在談論的部分。
<system.webServer>
<modules> <remove name="WebDAVModule"/> </modules>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<remove name="WebDAV" />
<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>
這裏是我的要求:
DELETE http://localhost:41021/api/account/JoopSloop HTTP/1.1
Host: localhost:41021
Connection: keep-alive
Accept: application/json, text/plain, */*
Origin: http://localhost:48898
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36
Authorization: Bearer -AqDRUMrrBNGICNUGIiSn0-gxTBUzElKupPPO9m1bCj0KHA9Z74vnOrPCxU-sTAWlfymTCDD3WGdFETC0-20zXOVSB7aStVHtCFrr-u9zogsUWfdiSicNzZQE3xrbyiFTB71GuwFjchx8xHIFI_6qHB26E2EKITwlFSi7X7p-lo6WWd4Z12SdL02ZxOI1wyZ8MQiXN47X6ZvuDKC6B_rJGQ2qh5p8pA8quZ0p8TvDLrPG6IuXv1U8jjS1iZCTVXO
Referer: http://localhost:48898/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4
的迴應是這樣的:
{"message":"The requested resource does not support http method 'DELETE'."}
所以我開始到這裏很失望..
寄來它'/ API /帳號/刪除/ JoopSloop'給我的'/ API /帳號/刪除/ JoopSloop' – VeldMuijz
按下進入快速: 它發送到'/ API /帳號/刪除/ JoopSloop '給了我一個'http 404'。 將方法的第一個單詞設置爲HTTP動詞,我相信它會自動路由到該方法。如果你特別爲方法添加'[HttpDelete]'屬性,它應該匹配進入該方法的HTTP刪除消息。 我有一個'GetUsers'方法,具有'[HttpGet]'屬性,並且能夠通過/ get/api/Accounts上的httpget獲取用戶。 – VeldMuijz