【发布时间】:2013-08-07 15:41:36
【问题描述】:
我正在开发一个将在 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;
}
}
在我的所有方法中,我都可以抛出 ArgumentException 或 Exception,并通过返回 HTTP STATUS CODE 来管理它们。
有没有办法在全局范围内捕获这些异常?
【问题讨论】: