Мне нужно подключиться к защищенной веб-службе ASMX через HTTPS с помощью Silverlight 4. Мне удалось подключиться к службе с помощью приложения WPF, используя следующую конфигурацию:
<binding name="wsSomeWebService" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="Transport">
<transport clientCredentialType="Basic" proxyCredentialType="Basic"
realm="www.somedomain.com" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
И в коде Iвыполните следующее:
client.ClientCredentials.UserName.UserName = "username";
client.ClientCredentials.UserName.Password = "password";
Однако, когда я пытаюсь подключиться из Silverlight, я всегда получаю исключение безопасности.
На сервере файл политики выглядит следующим образом:
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-methods="*" http-request-headers="*">
<domain uri="*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
В Silverlight я пытался использовать это:
<customBinding>
<binding name="secureBinaryHttpBinding" >
<security authenticationMode="UserNameOverTransport"/>
<httpsTransport />
</binding>
</customBinding>
А также это:
<basicHttpBinding>
<binding name="basicSecureBinding" maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<security mode="Transport"/>
</binding>
</basicHttpBinding>
Но ни один из них не работает.
У кого-нибудь естьидея о том, как воспроизвести успешную конфигурацию, которую я использовал в WPF на клиенте Silverlight?