我正在开发一个将在 IIS 上托管的 WCF Rest 服务。
现在我正在实施服务合同,当我尝试处理异常时,我发现我在所有方法上重复相同的代码。
这是我的服务合同方法之一:
public void DeleteMessage(string message_id)
{
int messageId;
OutgoingWebResponseContext ctx =
WebOperationContext.Current.OutgoingResponse;
if ((message_id == null) || (!Int32.TryParse(message_id, out messageId)) || (messageId < 1))
{
ctx.StatusCode = System.Net.HttpStatusCode.BadRequest;
ctx.StatusDescription = "message_id parameter is not valid";
throw new ArgumentException("DeleteMessage: message_id is not valid", "message_id");
}
try
{
using (var context = new AdnLineContext())
{
Message message = new Message() { MessageId = messageId };
context.Entry(message).State = EntityState.Deleted;
context.SaveChanges();
ctx.StatusCode = System.Net.HttpStatusCode.OK;
}
}
catch (Exception ex)
{
ctx.StatusCode = System.Net.HttpStatusCode.InternalServerError;
ctx.StatusDescription = ex.Message;
ctx.SuppressEntityBody = true;
}
}
在我的所有方法中,我都可以抛出 anArgumentException
或 an Exception
,并使用 return a 来管理它们HTTP STATUS CODE
。
有什么办法可以在全球范围内捕获该异常?