Почему привязка класса WCF не имеет члена ReaderQuotas?

Мне интересно, почему у класса Привязка в WCF нет свойства ЧитательКвоты, а у его подклассов BasicHttpBinding и WSHttpBinding есть.

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

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 устроен именно так?

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
1 466
1

Ответы 1

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

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

Каким образом квоты читателей зависят от SOAP? В лучшем случае они специфичны для XML, и даже в этом случае я не уверен в этом. Разве они не применимы и к средствам форматирования JSon, учитывая, что они реализованы внутри как средства чтения / записи xml?

tomasr 18.11.2008 05:26

Я проверил MSDN, похоже, что у многих подклассов Binding есть ReaderQuotas, а не только привязка SOAP.

Morgan Cheng 19.11.2008 05:06

Другие вопросы по теме