WCF, Метаданные и BIGIP - я могу вызвать корректный URL для объектов WSDL?

Вам могут потребоваться команды

$ flutter logs

blockquote>

, чтобы прочитать ответ с вашего iphone.

Чтобы добавить значок для iOS, вам понадобятся другие пакеты, такие как «flutter_launcher_icons» или «cupertino_icons».

Возьмите, например, flutter_launcher_icons, вам нужно добавить зависимости в ваш pubspec.yaml,

dev_dependencies:
  flutter_launcher_icons:

flutter_icons:
  android: true
  ios: "BLE4.0"
  image_path: "assets/icon/icon.png"
  image_path_android: "assets/icon/icon.png"
  image_path_ios: "assets/icon/icon.png"

, а затем вручную обновить файл проекта ios.

Вы также можете обратиться здесь

9
задан Jon Seigel 18 April 2010 в 00:12
поделиться

4 ответа

По сути, это проблема, состоящая из нескольких частей, для решения которой требуется ряд отдельных решений. В сущности, есть 3 проблемы с тем, чтобы сидеть за F5.

  1. Объявленное имя хоста конечной точки службы.
  2. Имя хоста ссылок на схемы xsd: import, которые описывают контракт данных
  3. описанную вами проблему http / https.
  4. 12114] Изменение заголовков хостов, как вы нашли, решает 1 и 2 (вы можете подойти к этому другими способами, кроме заголовков хостов, но здесь не нужно вдаваться в подробности). Номер 3 немного сложнее и требует больше кода (здесь слишком много, чтобы его выгрузить).

    Короткий ответ: вам нужно написать ContractBehavior, который реализует как IContractBehavior, так и IWsdlExportExtension.

    Важный бит, который вам нужен реализовать - это IWsdlExportExtension.ExportEndpoint. В этом методе вам нужно выполнить итерацию по всем расширениям WsdlPort, а когда вы найдете расширение типа SoapAddressBinding, вам нужно заменить свойство SoapAddressBinding.Location новым Uri, содержащим спецификатор протокола https. Вам также нужно сделать аналогичные биты для адресов импорта xsd и ссылок схемы.

    Если ваша служба также использует WS-адресацию, вам нужно сделать что-то подобное для обработки дополнительных адресов, которые она записывает в wsdl.

    Я основал код, который в итоге написал, на проекте WsdlExtras, доступном в CodePlex ( http://wcfextras.codeplex.com/ ). Метод, используемый в WsdlExtras, обеспечивает отличную базу для любых дополнительных битов, которые вам, возможно, понадобится добавить в него (из памяти я не думаю, что он имел дело с битами WS-Addressing). Бит, на который вы хотите посмотреть, это "

6
ответ дан 4 December 2019 в 23:08
поделиться

Если бы Вы добавляете SSL сверху существующего сервиса, он, вероятно, также влиял бы на режим безопасности привязки для клиента WCF, который можно легко переопределить.

Для WSDL, почему Вы только не загружаете файлы, изменяют URL на то, что Вы хотите и публикуете их вручную как файлы?

0
ответ дан 4 December 2019 в 23:08
поделиться

Я получил большую подсказку, которую, устанавливая атрибут адреса на конечной точке к URL Вы хотите отобразить в WSDL и затем добавить, что listenUri приписывает конечной точке с фактическим Uri для слушания на, добился бы цели.

URL на тестовой странице не становится затронутым (т.е. это все еще покажет адрес, указанный в ListenUri), но в WSDL будет установлен корректный Uri (тот, указанный в адресе.

Наиболее раздражающе, хотя - когда я попробовал это вскоре после того, как я отправил вопрос, я не мог заставить его работать в IIS, только когда сам размещающий в консольном приложении; проверка меня сегодня, я нашел, что она действительно работает; таким образом, теперь я не уверен, почему это не работало на меня прежде;

Что мы сделали, тем временем buid простое пользовательское поведение, которое изменило сервисное описание, поместив адрес, требуемый в WSDL от configurtion; очевидно, если там создается в поддержке, для которой это намного лучше, таким образом, я буду hopfully заставлять некоторое время на следующей неделе изучать это далее.

0
ответ дан 4 December 2019 в 23:08
поделиться

Добавьте в свой класс службы атрибут:

<ServiceBehavior(AddressFilterMode:=AddressFilterMode.Any)>

Это позволяет клиенту обращаться к службе как https: // ... но служба, которая будет размещена на http: // .....

В web.config узла службы элемент конечной точки должен иметь абсолютный URL-адрес в атрибуте адреса, который является общедоступным URL-адресом, который будет использоваться клиент. В том же элементе конечной точки установите для атрибута listenUri абсолютный URL-адрес, который прослушивает узел службы. Способ определения абсолютного URI по умолчанию, который прослушивает хост, - это добавить ссылку на службу в клиентское приложение, которая указывает на физический сервер, на котором размещена служба. В web.config клиента будет указан адрес службы. Затем я копирую это в атрибут listenUri в файле hosts web.config.

В конфигурации поведения службы добавьте элемент serviceMetaData с атрибутом httpGetEnabled = true

Таким образом, у вас будет что-то вроде:

<serviceBehaviors>
  <behavior name="myBehavior">
    <serviceMetadata httpGetEnabled="true" />
  </behavior
</serviceBehaviors>
...
<services>
  <service name="NamespaceQualifiedServiceClass" behavior="myBehavior" >
    <endpoint address="https://www.sslloadbalancer.com" binding="someBinding" contract="IMyServiceInterface" listenUri="http://www.servicehost.com" ...  />
  </service>
</services>

Я не уверен, работает ли это с безопасностью сообщений или безопасностью транспорта. Для этого конкретного приложения учетные данные были переданы как часть DataContract, поэтому у нас был режим безопасности basicHttpBinding = none. Поскольку транспорт безопасен (для балансировщика нагрузки ssl), проблем с безопасностью не было.

Также можно оставить пустым атрибут listenUri, однако он должен присутствовать.

К сожалению, в WCF есть ошибка. где базовый адрес импортированных схем в WSDL имеет базовый адрес listenUri, а не общедоступный базовый адрес (тот, который настроен с использованием атрибута адреса конечной точки). Чтобы обойти эту проблему, вам необходимо создать реализацию IWsdlExportExtension, которая вносит импортированные схемы напрямую в документ WSDL и удаляет импортированные. Пример этого приведен здесь http://winterdom.com/2006/10/inlinexsdinwsdlwithwcf . Кроме того, у вас может быть класс, унаследованный от BehaviorExtensionElement, и дополнить два новых метода:

Public Overrides ReadOnly Property BehaviorType() As System.Type
    Get
        Return GetType(InlineXsdInWsdlBehavior)
    End Get
End Property

Protected Overrides Function CreateBehavior() As Object
    Return New InlineXsdInWsdlBehavior()
End Function

Это позволит вам добавить поведение расширения в файл .config и добавить поведение, используя конфигурацию, вместо того, чтобы создавать фабрику служб.

в элементе конфигурации system.servicemodel добавьте:

  <endpointBehaviors>
    <behavior name="SSLLoadBalancerBehavior">          
      <flattenXsdImports/>
    </behavior>
  </endpointBehaviors>
        </behaviors>
<extensions>
  <behaviorExtensions>
    <!--The full assembly name must be specified in the type attribute as of WCF 3.5sp1-->
    <add name="flattenXsdImports" type="Org.ServiceModel.Description.FlattenXsdImportsEndpointBehavior, Org.ServiceModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>        
  </behaviorExtensions>
</extensions>

И затем укажите новое поведение конечной точки в своей конфигурации конечной точки, используя атрибут behaviorConfiguration

<endpoint address="" binding="basicHttpBinding" contract="WCFWsdlFlatten.IService1" behaviorConfiguration="SSLLoadBalancerBehavior">
0
ответ дан 4 December 2019 в 23:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: