Веб-API WCF в MVC для атрибута WebInvoke (BodyStyle = WrappedRequest)

#.net #wcf #asp.net-web-api

#.net #wcf #asp.net-web-api

Вопрос:

Я пытаюсь воссоздать веб-службу WCF в веб-API MVC, которая имеет следующий атрибут в веб-методе:

 [WebInvoke(Method = "*", BodyStyle = WebMessageBodyStyle.WrappedRequest)]
 

VB:

 <WebInvoke(Method = "*", BodyStyle = WebMessageBodyStyle.WrappedRequest)> _
 

Каков способ MVC Web API для создания обернутого запроса?

Ответ №1:

У меня такая же проблема, и я не смог найти никакого решения, однако ниже приведен мой обходной путь.

Создание WrappedResponse в виде структуры имени / значения.

 public class WrappedResponse<T>
    {
        public List<T> SampleCollection { get; set; }
        public static WrappedResponse<T> GetResult(List<T> list)
        {
            var result = new WrappedResponse<T>();
            result.SampleCollection = list;
            return resu<
        }       
    }
 

Возвращает экземпляр WrappedResponse.

 [Route("Products")]
        public IHttpActionResult Get()
        {
            Configuration.Formatters.Clear();
            Configuration.Formatters.Add(new JsonMediaTypeFormatter());

            using (var context = new AdventureWorks2012Entities())
            {
                List<Product> productsList = context.Products.Take(10).ToList();
                var result = WrappedResponse<Product>.GetResult(productsList);
                return Ok(result);
            }
        }