Re: [Silverlight] WCF over https
От: kosfr Израиль  
Дата: 20.04.11 07:42
Оценка:
Здравствуйте, Holms, Вы писали:

H>Привет


H>Собственно субж. Кто нибудь успешно подружил Silverlight и WCF over https. У меня ну никак не получается вызвать метод из сервиса через https протокол.

H>Уже только что не пробовал, не хочет да и всё.
H>При вызове метода из Silverlight получаю исключение "Not Found", если из WinForms приложения (для теста) то получаю "Address not found" и если смотреть Event Log то видим что есть попытка открыть ссылку такого вида
H>
H>'https://localhost/SilverlightOverSSL.Web/Services/SecuredService.svc/$metadata'. 
H>


H>если $metadata убрать то сылка нормально открывается в browsere.


H>Конфиг для сервиса такой

H>

H>  <system.serviceModel>
H>    <behaviors>
H>      <serviceBehaviors>
H>        <behavior name="">
H>          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
H>          <serviceDebug includeExceptionDetailInFaults="true" />
H>        </behavior>
H>      </serviceBehaviors>
H>    </behaviors>

H>    <bindings>
H>      <basicHttpBinding>
H>        <binding name="basicBinding" transferMode="Buffered">
H>          <security mode="None"/>
H>        </binding>
H>        <binding name="basicBindingSSL" transferMode="Buffered">
H>          <security mode="Transport"/>
H>        </binding>
H>      </basicHttpBinding>
H>    </bindings>

H>    <services>
H>      <service name="SecuredService">
H>        <endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicBinding" name="SecuredService"
H>                  contract="SilverlightOverSSL.Web.Services.ISecuredService"/>
H>        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
H>      </service>
      
H>      <service name="SecuredServiceSSL">
H>        <endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicBindingSSL" name="SecuredService"
H>                  contract="SilverlightOverSSL.Web.Services.ISecuredService"/>
H>        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
H>      </service>
H>    </services>
    
H>    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
H>  </system.serviceModel>

H>


H>для Silverlight клиента

H>
H>    <system.serviceModel>
H>        <bindings>
H>            <basicHttpBinding>
H>                <binding name="BasicHttpBinding_ISecuredService" maxBufferSize="2147483647"
H>                    maxReceivedMessageSize="2147483647">
H>                    <security mode="Transport" />
H>                </binding>
H>            </basicHttpBinding>
H>        </bindings>
H>        <client>
H>            <endpoint address="https://localhost/SilverlightOverSSL.Web/Services/SecuredService.svc"
H>                binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISecuredService"
H>                contract="SecuredServiceReference.ISecuredService" name="BasicHttpBinding_ISecuredService" />
H>        </client>
H>    </system.serviceModel>

H>


H>для WinForms проекта

H>
H>    <system.serviceModel>
H>        <bindings>
H>            <basicHttpBinding>
H>                <binding name="BasicHttpBinding_ISecuredService" closeTimeout="00:01:00"
H>                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
H>                    allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
H>                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
H>                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
H>                    useDefaultWebProxy="true">
H>                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
H>                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
H>                    <security mode="Transport">
H>                        <transport clientCredentialType="None" proxyCredentialType="None"
H>                            realm="" />
H>                        <message clientCredentialType="UserName" algorithmSuite="Default" />
H>                    </security>
H>                </binding>
H>            </basicHttpBinding>
H>        </bindings>
H>        <client>
H>            <endpoint address="https://localhost/SilverlightOverSSL.Web/Services/SecuredService.svc"
H>                binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISecuredService"
H>                contract="SSLs.ISecuredService" name="BasicHttpBinding_ISecuredService" />
H>        </client>
H>    </system.serviceModel>

H>


H>если кому интересно вот сам проект.


H>Спасибо за все идеи которое могут быть.



подключение к WCF с Silverlight

BasicHttpBinding binding = new BasicHttpBinding()
{
MaxBufferSize = int.MaxValue,
MaxReceivedMessageSize = int.MaxValue
};

if (SiteConfig.ApplicationPath.ToLower().StartsWith("https"))
{
binding.Security.Mode = BasicHttpSecurityMode.Transport;
}
Kostya
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.