得到了坏请求错误的DELETE REST Web服务

问题描述:

在我的界面我定义:得到了坏请求错误的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错误的请求

服务器遇到错误处理请求。

它在哪里发生?它是否达到“deleteAsset”方法?

此外,为什么你要检查资产是否存在删除之前?这似乎是不必要的开销。不能,你只需运行删除命令,如果它存在,它将被删除,否则什么都不会发生。如果您需要知道是否实际删除了某些内容,请从删除命令中获取受影响的行。

问题是可能是不在您发布的代码中。

如果您发送格式错误的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