Здравствуйте, 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;
}