Я разрабатываю службу WCF Rest, которую я собираюсь разместить в 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
.
Есть ли способ поймать эти исключения во всем мире?
Спасибо вам за полный ответ, но я не сложный сценарий корпоративного уровня. Я только хочу не повторять код. Благодарю. – VansFannel
Ну, короче говоря, нет простой простой альтернативы для исключения исключений главным образом из-за того, что WCF не очень удобен для HTTP в первую очередь. Я бы сделал все это в Web API вместо этого, взял меня на два дня, чтобы полностью разобрать его с нуля - менее шаблонный с условными обозначениями кода MVC. –
Это то, что я искал: http://dotnet.dzone.com/news/wcf-rest-tip-2 Извините, я не очень хорошо объяснил. – VansFannel