2012-04-01 69 views
0

在我的界面我定義:得到了壞請求錯誤的DELETE REST Web服務

[OperationContract] 
[WebInvoke(Method = "DELETE", 
    UriTemplate = "deleteAsset/{asset_id}")] 
void deleteAsset(string asset_id); 

我實現如下:

public void deleteAsset(string asset_id) 
{ 
    using (DataClassesDataContext thisContext = new 
     DataClassesDataContext(ConfigurationManager.ConnectionStrings 
     ["mgatewayConnectionString"].ConnectionString)) 
    { 
      var result = 
       thisContext.spGetAssetById(Convert.ToInt32(asset_id)).FirstOrDefault(); 
      if (result != null) 
      { 
       thisContext.spDeleteAsset(Convert.ToInt32(asset_id)); 
       thisContext.spDeleteModuleAssetLink(Convert.ToInt32(asset_id)); 
      } 
    }//using 
} 

我使用RESTClient實現對Firefox進行測試。我從方法下拉列表中選擇DELETE並輸入url:localhost:57518/Service.svc/deleteAsset/127並點擊「發送」按鈕。然後我得到這個錯誤。我得到了以下錯誤消息:

400錯誤的請求

服務器遇到錯誤處理請求。

回答

0

它在哪裏發生?它是否達到「deleteAsset」方法?

此外,爲什麼你要檢查資產是否存在刪除之前?這似乎是不必要的開銷。不能,你只需運行刪除命令,如果它存在,它將被刪除,否則什麼都不會發生。如果您需要知道是否實際刪除了某些內容,請從刪除命令中獲取受影響的行。

1

問題是可能是不在您發佈的代碼中。

如果您發送格式錯誤的http請求,通常應該只會發生400錯誤。所以無論你如何測試它,Web服務器都會拒絕它,它會觸發你的方法。

+0

我使用RESTClient for Firefox進行測試。我從方法下拉列表中選擇DELETE並輸入url:http:// localhost:57518/Service.svc/deleteAsset/127,然後點擊「發送」按鈕。然後我得到這個錯誤。我不確定有什麼問題。 – 2012-04-01 19:59:42

+0

這不是我用過的工具,所以我不知道你是否正確使用它。要進一步調查,您可能需要檢查RESTClient發送的原始http消息。此外,如果您可以找到Web服務器(IIS?)的日誌,並查看是否在此處記錄了錯誤。 – 2012-04-02 09:10:54

相關問題