Silverlight: подключение к защищенному сервису ASMX - PullRequest
2 голосов
/ 28 сентября 2010

Мне нужно подключиться к защищенной веб-службе 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?

1 Ответ

2 голосов
/ 28 сентября 2010

Вместо

<domain uri="*"/>

используйте

<domain uri="http://*"/>
<domain uri="https://*" />

в вашем clientaccesspolicy.xml .Проверьте эту ссылку для деталей.

...