Не может назвать веб-сервис со стандартной аутентификацией с помощью WCF

Эта ошибка (который был зафиксирован в automysqlbackup 2.6+debian.2-1) может работаться вокруг, мешая automysqlbackup вывести performance_schema и information_schema базы данных. Это может быть сделано путем редактирования /etc/default/automysqlbackup следующим образом:

Добавляют, что дополнительный канал к grep ступает для удаления performance_schema и information_schema из списка DBNAMES.

Так, в строке, которая запускается DBNAMES=, и после | grep -v ^mysql$, вставляют

| grep -v ^performance_schema$ | grep -v ^information_schema$

прежде | tr \\\r\\\n ,\ таким образом, что заключительная строка должна быть похожей

DBNAMES=`mysql --defaults-file=/etc/mysql/debian.cnf --execute="SHOW DATABASES" | awk '{print $1}' | grep -v ^Database$ | grep -v ^mysql$ | grep -v ^performance_schema$ | grep -v ^information_schema$ | tr \\\r\\\n ,\ `

Благодаря JГ©rГґme Drouet.

, С другой стороны, при использовании исходного automysqlbackup пакета из SourceForge а не способного пакета можно добавить performance_schema базу данных к исключенным базам данных путем изменения строки, которая содержит CONFIG_db_exclude в/etc/automysqlbackup/myserver.conf:

# List of DBNAMES to EXLUCDE if DBNAMES is empty, i.e. ().
CONFIG_db_exclude=( 'information_schema' 'performance_schema' )

15
задан marc_s 4 December 2012 в 15:31
поделиться

2 ответа

Первый вопрос: это служба Java на основе SOAP или REST, которую вы пытаетесь вызвать?

Прямо сейчас с "webHttpBinding" вы используете подход на основе REST. Если служба Java является службой SOAP, вам необходимо изменить привязку на «basicHttpBinding».

ЕСЛИ это служба на основе SOAP, попробуйте следующее:

BasicHttpBinding binding = new BasicHttpBinding();

binding.SendTimeout = TimeSpan.FromSeconds(25);

binding.Security.Mode = BasicHttpSecurityMode.Transport;
binding.Security.Transport.ClientCredentialType = 
                              HttpClientCredentialType.Basic;

EndpointAddress address = new EndpointAddress(your-url-here);

ChannelFactory<MyService> factory = 
             new ChannelFactory<MyService>(binding, address);

MyService proxy = factory.CreateChannel();

proxy.ClientCredentials.UserName.UserName = "username";
proxy.ClientCredentials.UserName.Password = "password";

Я использовал это с различными веб-службами, и это работает - большую часть времени.

Если это не сработает, вам нужно будет узнать больше о том, чего ожидает этот веб-сервис Java, и о том, как отправить ему соответствующую информацию.

Marc

27
ответ дан 1 December 2019 в 01:17
поделиться

Я также добавлю к этому, основываясь на аналогичной проблеме, с которой я только что столкнулся. Я автоматически сгенерировал конфиг / прокси с помощью VS - но созданный им конфиг на самом деле не работал.

Хотя в нем был правильно установлен security mode="Transport", в нем не был установлен clientCredentialType="Basic". Я добавил к этому свой конфиг, но он все равно не работал. Затем я фактически удалил безопасность сообщения, которое создал инструмент, поскольку служба, с которой я связываюсь, использует только SSL + Basic:

<message clientCredentialType="UserName" algorithmSuite="Default" />

Вуаля - все заработало.

Я не уверен, почему это имело эффект, учитывая, что элемент не указывал безопасность на уровне сообщений... но это сработало.

3
ответ дан 1 December 2019 в 01:17
поделиться
Другие вопросы по тегам:

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