Мы пытаемся определить тип запроса, отправляемого нашему сервису, чтобы мы могли вернуть данные в правильном формате. Приведенный ниже код работает отлично, за исключением того, что мы не хотим помещать его в метод «Get» каждого создаваемого нами сервиса. Может ли кто-нибудь предложить какие-либо предложения относительно того, как мы могли бы реализовать какой-либо базовый класс или точку расширения, чтобы нам не приходилось копировать и вставлять этот фрагмент везде?
[WebGet(UriTemplate = "Case/{id}")]
public SampleItem Get(string id)
{
string formatQueryStringValue = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters["format"];
if (!string.IsNullOrEmpty(formatQueryStringValue))
{
if (formatQueryStringValue.Equals("xml", System.StringComparison.OrdinalIgnoreCase))
{
WebOperationContext.Current.OutgoingResponse.Format = WebMessageFormat.Xml;
}
else if (formatQueryStringValue.Equals("json", System.StringComparison.OrdinalIgnoreCase))
{
WebOperationContext.Current.OutgoingResponse.Format = WebMessageFormat.Json;
}
else
{
throw new WebFaultException<string>(string.Format("Unsupported format '{0}'", formatQueryStringValue), HttpStatusCode.BadRequest);
}
}
return new SampleItem() { StringValue = "test" };
}