IIS에서 호스팅 할 WCF Rest 서비스를 개발하고 있습니다.한 곳에서만 WCF Rest Service 예외 처리
이제 서비스 계약을 구현 중이며 예외를 처리하려고 할 때 모든 메소드에서 동일한 코드가 반복되는 것을 볼 수 있습니다.
이 내 서비스 계약 방법의 하나입니다 내 모든 메소드에
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에 친숙하지 않기 때문에 예외를 던지기위한 좋은 대안이 없다. 저는 웹 API에서 모든 것을 할 것이고, MVC 코드 규칙에 따른 보편화되지 않은 방식으로 처음부터 완벽하게 파악하는 데 2 일이 걸렸습니다. –
이것은 내가 찾고 있었던 것이다 : http://dotnet.dzone.com/news/wcf-rest-tip-2 미안하지만, 잘 설명하지 못했다. – VansFannel