ASP.NET - Может ли ответ веб-метода быть SOAP (XML) и JSON? - PullRequest
0 голосов
/ 11 ноября 2010

У меня есть веб-приложение ASP.NET.

Имеет веб-сервис с несколькими веб-методами.

Все эти веб-методы основаны на настройках по умолчанию. Например:

using System.Web.Services;

namespace WebApplication2
{
    [WebService(Namespace = "http://mydomain.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    public class WebService1 : WebService
    {
        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }

        [WebMethod]
        public Person GetPersonById(int id)
        {
            Person result = new Person();
            // code...
            return person;
        }
    }
}

Ответ в формате SOAP (XML).

Мой вопрос: можно ли изменить формат ответа на JSON на основе входного параметра или заголовка?

Ответы [ 3 ]

0 голосов
/ 12 ноября 2010

Технически, да, вы просто отправляете обратно Json и устанавливаете Content-Type Ответа в «application / json».

0 голосов
/ 12 ноября 2010

Тип ответа веб-службы ASMX задается атрибутом ResponseFormat в отдельном веб-методе.

например:

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
public Person GetPersonById(int id)

или

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public Person GetPersonById(int id)

Так что AFAIK ответ: нет - вы не можете вернуть оба (из одного метода).

Я уверен, что есть некоторые хаки, которые вы можете сделать, но это рекомендуемый способ.

Если вы хотите начать возвращать оба типа, вам следует перейти к более RESTful-подходу, либо с WCF REST, OData или ASP.NET MVC.

В этих технологиях вызываемый может указать желаемый тип ответа:

GET: http://api.yourdomain.com/person/1?format=json

GET: http://api.yourdomain.com/person/1?format=xml

Обратите внимание, что оба вызова являются одним физическим ресурсом.

С другой стороны, ваши вызовы веб-службы JSON должны быть HTTP POST , из соображений безопасности "The Goo" здесь .

0 голосов
/ 11 ноября 2010

Вы должны проверить Windows Communication Foundation (WCF). Используя это, вы можете определить несколько конечных точек для службы. Каждая из этих конечных точек может, например, возвращать данные в другом формате.

Конечные точки REST / SOAP для службы WCF

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...