Извините ответ найден при вводеПодключение к ASMX WebService с WCF через прокси-сервер
Я пытаюсь подключиться к внешнему веб-сервиса, который требует проверки подлинности имя пользователя/пароль через прокси-сервер. Я использую Visual Studio Express 2008 для создания ссылки на службу
- Я подключен к тому же WebService с помощью веб-reference.We только пришлось установить большее время ожидания потому что это занимает много времени, чтобы закончить ,
- я подключен к другому WebService, который не требует аутентификации имени пользователя/пароль сгенерированной ссылкой службы и некоторых настройками, чтобы получить его через прокси.
Так что моя мысль будет принять эту ссылку, направьте его на правильной WebService и добавьте аутентификацию.
Конфигурационного Я использую без безопасности:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.net>
<defaultProxy useDefaultCredentials="true">
<proxy bypassonlocal="False" proxyaddress="http://***.***.****:80" />
</defaultProxy>
</system.net>
<system.serviceModel>
<bindings>
<customBinding>
<binding name="AreaWebServiceSoap12">
<textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
messageVersion="Soap12" writeEncoding="utf-8">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
</textMessageEncoding>
<httpTransport manualAddressing="false" maxBufferPoolSize="524288"
maxReceivedMessageSize="65536" allowCookies="false" authenticationScheme="Anonymous"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
keepAliveEnabled="true" maxBufferSize="65536" proxyAuthenticationScheme="Anonymous"
realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false"
useDefaultWebProxy="true" />
</binding>
</customBinding>
</bindings>
<client>
<endpoint address="http://www.****.*****.****.com/samplewebservice/service.asmx"
binding="customBinding" bindingConfiguration="AreaWebServiceSoap12"
contract="ServiceReference1.ServiceSoap" name="ServiceSoap" />
</client>
</system.serviceModel>
</configuration>
я добавил тэ следующего кода на мой вызов для проверки подлинности:
static void Main(string[] args)
{
ServiceSoapClient s = new ServiceSoapClient();
s.ClientCredentials.UserName.UserName = @"username";
s.ClientCredentials.UserName.Password = @"password";
Service.RawGpsData[] result = s.GetRawGpsData(0);
Console.WriteLine(String.Format("done:{0}",result.Length));
Console.ReadLine();
}
Только с помощью этой установки дает ошибку, как ожидалось:
HTTP-запрос не авторизовался с помощью схемы аутентификации клиента Anonymous. Получен заголовок аутентификации с сервера NTLM.
Теперь я теряюсь и начинаю пытаться глупо, потому что я только начинаю использовать WCF.
Когда я добавить следующий раздел в конфигурации
<security authenticationMode="UserNameOverTransport"></security>
я получаю следующее сообщение об ошибке:
Связывание CustomBinding.http:// tempuri.org/для контракта AreaWebServiceSoap.AreaWebServices является настроенный с режимом проверки, для которого требуется транспортный уровень с целостностью и конфиденциальностью. Транспорт не может обеспечить целостность и конфиденциальность.
Извините, набрав этот вопрос, я сам наткнулся на ответ. Я все еще думаю, что люди могут быть заинтересованы в этом, и все комментарии и мысли по-прежнему приветствуются. Поэтому я оставлю этот вопрос и сделаю его сообществом и отправлю ответ самостоятельно.
Спасибо. Это приятное дополнение, – KeesDijk 2009-01-01 10:55:23