2008-11-17 3 views
1

мне интересно, почему класс Binding в WCF не имеет свойство ReaderQuotas, в то время как его подклассы BasicHttpBinding и WSHttpBinding делает.Почему у WCF класса Binding нет члена ReaderQuotas?

Этот факт делает кодирование немного сложнее. Для меня я использую ниже код для извлечения информации привязки из URI конечной точки MEX. Тем не менее, он просто получил привязку. Если я хочу изменить ReaderQuotas привязки, я должен скрыть его до подклассов Переплет, но я не могу точно указать привязку во время выполнения.

public static void LoadMex(string serviceMexUri, 
    ContractDescription contract, 
    out EndpointAddress endpointAddress, 
    out Binding serviceBinding) 
{ 
    EndpointAddress mexAddress = new EndpointAddress(serviceMexUri); 
    MetadataExchangeClient mexClient = new MetadataExchangeClient(mexAddress); 
    mexClient.ResolveMetadataReferences = true; 
    mexClient.OperationTimeout = TimeSpan.FromSeconds(30); 

    MetadataSet metaSet = mexClient.GetMetadata(); 
    WsdlImporter importer = new WsdlImporter(metaSet); 
    ServiceEndpointCollection endpoints = importer.ImportAllEndpoints(); 

    foreach (ServiceEndpoint ep in endpoints) 
    { 
     // we just use one endpoint for now. 
     if ((ep.Contract.Namespace == contract.Namespace) && 
      (ep.Contract.Name == contract.Name)) 
     { 
      endpointAddress = new EndpointAddress(ep.Address.Uri); 
      serviceBinding = ep.Binding; 
      return; 
     } 
    } 
    throw new ApplicationException(String.Format("no proper endpoint is found from MEX {0}", serviceMexUri)); 
} 

Кто-нибудь знает, почему WCF разработан таким образом?

Есть ли способ обойти это ограничение?

ответ

0

Причина в том, что привязки предназначены для работы в качестве общей инфраструктуры связи, а ReaderQuotas является специфическим объектом SOAP. Вот почему вы видите это только на привязках, которые предназначены для использования с передачами SOAP-сообщений.

Оператор «как», чтобы попробовать бросить те типы, которые вы хотите поддержать, вероятно, ваш лучший вариант здесь.

+0

Как читаются квоты SOAP? В лучшем случае они специфичны для XML, и даже в этом случае я не уверен в этом. Разве они не применяются к форматировщикам JSon, учитывая, что они реализованы внутри как читатели/писатели xml? – tomasr 2008-11-18 02:26:33