2015-02-09 27 views
2

DELETE方法在一個新的WebAPI項目,有這樣Get方法:在調用的Web API

// GET api/values/5 
public string Get(int id) 
{ 
    return "value"; 
} 

Delete方法

// DELETE api/values/5 
    public void Delete(int id) 
      { 
       var client = new MongoClient("mongodb://localhost:27017"); 
       var server = client.GetServer(); 
       var db = server.GetDatabase("Test"); 
       var collection = db.GetCollection<Entity>("Entities"); 
       var deleteEntity = Query<Entity>.EQ(e => e.Id, id); 
       collection.Remove(deleteEntity); 

      } 

他們有相似的網址api/values/5。 當我想調用Delete方法時,它執行Get方法。該怎麼辦?

+4

你打電話它使用HTTP動詞「DELETE」?你能描述你如何請求你的API嗎? – Giorgio 2015-02-09 15:23:02

+0

請說明你是如何調用Delete方法的?還有你有正確的裝飾方法與適當的屬性? – ssilas777 2015-02-09 15:23:03

+0

這是我的刪除方法。 – Tanvir 2015-02-09 15:32:13

回答

2

看看在HttpDelete屬性:

https://msdn.microsoft.com/en-us/library/system.web.mvc.httpdeleteattribute(v=vs.118).aspx

你需要來裝飾你這樣的方法,使MVC知道如何處理傳入的請求:

[HttpGet] 
public string Get(int id) 
{ 
    ... 
} 

[HttpDelete] 
public void Delete(int id) 
{ 
    ... 
} 

如果」通過HTML表單重新提交到刪除方法,請記住,他們只支持POST和GET方法,所以您需要通過JavaScript提交DELETE:

http delete request from browser

4

該URL是相同的,但您使用「DELETE」「http方法」而不是「GET」調用此URL程序。如果您只是瀏覽瀏覽器中的網址,則瀏覽器只會執行GET操作。如何以編程方式執行DELETE(或POST或PUT)將取決於您用於調用服務的庫,但它們都傾向於具有某種參數或稱爲「方法」的屬性來設置此項。

0

使用...

得到:/控制器/ 123456

刪除:/控制器/ ID/123456

0

下面的配置和平解決我的問題

<validation validateIntegratedModeConfiguration="false" /> 
<handlers> 
    <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" /> 
    <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" /> 
    <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 

    <!--This will enable all Web API verbose--> 
    <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>