在我的界面中我定义了:
[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 for Firefox进行测试。我从Method下拉列表中选择了DELETE并输入了url:localhost:57518 / Service.svc / deleteAsset / 127并点击“发送”按钮。然后我收到了这个错误。我收到以下错误消息:
400错误请求
服务器在处理请求时遇到错误。
答案 0 :(得分:1)
问题是可能不在您发布的代码中。
通常只有在发送格式错误的http请求时才会发生400错误。因此,无论您采用何种方式对其进行测试,Web服务器都会拒绝它,因为它会影响您的方法。
答案 1 :(得分:0)
它在哪里发生?它会到达“deleteAsset”methid吗?
另外,为什么要在删除之前检查资产是否存在?这似乎是一种不必要的开销。你不能只运行删除命令,如果它存在,它将被删除,否则什么都不会发生。如果您需要知道是否实际删除了某些内容,请从delete命令中获取受影响的行。