Хотя это старый вопрос, мы все еще время от времени приходим к этому сценарию в последних проектах.
Чтобы отправить необязательные параметры запроса, я создал Веб-расширения WCF пакет nuget.
После установки вы можете использовать такой пакет:
using (var factory = new WebChannelFactory<IQueryParametersTestService>(new WebHttpBinding()))
{
factory.Endpoint.Address = new EndpointAddress(ServiceUri);
factory.Endpoint.EndpointBehaviors.Add(new QueryParametersServiceBehavior());
using (var client = factory.CreateWebChannel())
{
client.AddQueryParameter("format", "xml");
client.AddQueryParameter("version", "2");
var result = client.Channel.GetReport();
}
}
На стороне сервера вы можете получить параметры, используя WebOperationContext:
WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters;