得到了坏请求错误的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服务器都会拒绝它,它会触发你的方法。
我使用RESTClient for Firefox进行测试。我从方法下拉列表中选择DELETE并输入url:http:// localhost:57518/Service.svc/deleteAsset/127,然后点击“发送”按钮。然后我得到这个错误。我不确定有什么问题。 – 2012-04-01 19:59:42
这不是我用过的工具,所以我不知道你是否正确使用它。要进一步调查,您可能需要检查RESTClient发送的原始http消息。此外,如果您可以找到Web服务器(IIS?)的日志,并查看是否在此处记录了错误。 – 2012-04-02 09:10:54