IIS でホストする WCF Rest サービスを開発しています。
現在、サービス コントラクトを実装しています。例外を処理しようとすると、すべてのメソッドで同じコードを繰り返していることがわかります。
これは、私のサービス契約方法の 1 つです。
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
それらを return a で管理できますHTTP STATUS CODE
。
その例外をグローバルにキャッチする方法はありますか?