#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»