Как я могу увеличить maxReceivedMessageSize при вызове WCF из VB6?

#wcf #vb6 #moniker

#wcf #vb6 #прозвище

Вопрос:

На данный момент у меня есть: 1) настройка WCF для возврата блока xml (в частности, это содержимое календаря из Exchange 2003). 2) форма vb6 с командой на ней, обращающейся к WCF через объект, построенный на имени службы, включая содержимое файла контракта WSDL.

Это работает нормально только тогда, когда передаваемая строка имеет приемлемый размер. Когда я пытаюсь вернуть весь XML, сгенерированный на стороне WCF, я сталкиваюсь со следующей ошибкой: «Превышена квота максимального размера сообщения для входящих сообщений (65536). Чтобы увеличить квоту, используйте свойство maxReceivedMessageSize для соответствующего элемента привязки. «

Когда я добавляю конфигурацию привязки в WCF app-config для увеличения maxReceivedMessageSize, это не имеет никакого эффекта — предположительно, поскольку клиент VB6 не видит этого. (сгенерированный контракт WSDL даже не включает значение в свой xml)

Читая *, есть предположение, что мне нужно внести аналогичные изменения в конфигурацию на стороне клиента. Итак, я создал файл VB6.EXE.CONFIG и скопировал в него данные конфигурации привязки. затем я расширил псевдоним, включив в него следующее: binding=WSHttpBinding_IExchange, bindingNamespace=’Exchange’, bindingConfiguration=’ExchangeBinding’

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

при неправильном написании элементов binding или bindingNamespace приведенного выше псевдонима я получаю ожидаемую ошибку, но при неправильном написании элемента bindingConfiguration я не получаю ошибки, как будто этот элемент в любом случае не имеет значения.

Кажется, у меня есть фрагменты, но на данный момент не рабочее решение. Есть какие-нибудь идеи?

  • Объект obj объявлен как тип прокси-сервера интерфейса. Затем для псевдонима устанавливается значение, включающее только адрес и тип привязки. Поскольку вы используете только настройки по умолчанию для wsHttpBinding, вам не требуется указывать значение bindingConfiguration . Если вам требуется переопределить какие-либо настройки по умолчанию для привязки, вы можете предоставить файл конфигурации приложения с именем file.exe.config и поместить его в каталог программы клиента

Комментарии:

1. Ваш конфигурационный файл буквально «vb6.exe.config»? Если имя вашего приложения MyApp.exe , вы пробовали «MyApp.exe.config»?

Ответ №1:

Лично я бы создал открытую библиотеку .NET COM, которую вы вызываете из VB6. Библиотека .NET могла бы управлять всей привязкой клиента, а VB6 просто общался бы с DLL и передавал строки.

Комментарии:

1. Не могли бы вы поделиться некоторыми ссылками или ссылками, чтобы начать с этого подхода?

2. Поиск в Интернете: «как создать библиотеку DLL, доступную .net COM»