Как применить два поведения конечной точки к одной конфигурации поведения? - PullRequest
2 голосов
/ 21 января 2010

Этот вопрос является продолжением ответа @ joshperry на CustomQueryStringConverter . Я реализовал это решение с небольшой модификацией. Моя версия конвертирует System.Int32[] вместо string[].

Однако у меня проблема с моей конфигурацией WCF. Мой сервис готовит SOAP, XML и JSON. SOAP не был проблемой, это решение работает для XML, но JSON все еще не работает. Я попытался выяснить, что класс, который выполняет преобразование JSON автоматически ( enableWebScript поведение), является закрытым классом, поэтому я не могу переопределить его, как вы сделали для WebHttpBehavior. Я также попытался добавить два поведения, но это тоже не сработало:

    <behaviors>
      <endpointBehaviors>
        <behavior name="xmlBehavior">          
          <ArrayQuerystring />
        </behavior>
        <behavior name="jsonBehavior">                    
          <ArrayQuerystring />
          <enableWebScript />
        </behavior>
      </endpointBehaviors>      
    </behaviors>

Я думаю, это может быть проблема с заказом? Если сначала поставить поведение ArrayQuerystring, я не получу никаких результатов. Если я поставлю его на второе место, то получу те же результаты, что и конечная точка XML. Как применить ваш CustomQuerystringConverter к конечной точке JSON?

1 Ответ

1 голос
/ 25 февраля 2011

Анализатор JSON уже поддерживает массивы. Вы можете передать их в строке URL следующим образом:

...?ID=2&includedCollections=["Addresses","Phones"]
...