SL4 / WCF не работает с HTTPS - PullRequest
1 голос
/ 06 мая 2011

Мне нужна помощь, чтобы получить приложение SL4 / WCF с использованием https на рабочем сервере. Приложение отлично работает с использованием http, и с помощью https оно загрузит xap и отобразит страницу входа, но я получаю общую ошибку при попытке аутентификации или выполнения вызовов wcf:

«Во время операции возникла исключительная ситуация, делающая результат недействительным. Проверьте InnerException для получения сведений об исключении. ”

«[Async_ExceptionOccurred] Аргументы: Строки ресурса отладки недоступны. Часто ключ и аргументы предоставляют достаточную информацию для диагностики проблемы. Смотри http://go.microsoft.com/fwlink/?linkid=106663&Version=4.0.60310.0&File=System.dll&Key=Async_ExceptionOccurred

Среда - SL4 - MVVM, IIS7, Basic WCF, класс поведения ошибок Silverlight и аутентификация с использованием поставщика членства Asp.net. Веб-сайт и службы расположены в одном каталоге, поэтому я не думаю, что существует проблема с несколькими доменами - сайт работает с использованием http, а fiddler не показывает отсутствующий файл clientaccesspolicy.xml - хотя я все равно установил этот файл. Fiddler не предоставляет никаких подсказок или трафика после загрузки xap. Я также могу просматривать и получать доступ к услуге напрямую при использовании https.

Любая помощь или предложения будут оценены. Спасибо, Макс.

Вот web.config:

<extensions>
  <behaviorExtensions>
    <add name="silverlightFaults" type="Accruit.RidgeLine.Behaviors.SilverlightFaultBehavior, Accruit.RidgeLine.Behaviors, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  </behaviorExtensions>
</extensions>

<behaviors>
  <serviceBehaviors>
    <behavior name="silverlightBehavior">
      <serviceMetadata httpsGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" httpsHelpPageEnabled="true" />
    </behavior>
    <behavior name="">
      <serviceMetadata httpsGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" httpsHelpPageEnabled="true" />
    </behavior>
  </serviceBehaviors>

  <endpointBehaviors>
    <behavior name="SilverlightFaultBehavior">
      <silverlightFaults />
    </behavior>
  </endpointBehaviors>
</behaviors>

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />

<services>
  <service name="Accruit.RidgeLine.Web.BankingService" behaviorConfiguration="silverlightBehavior" >
    <!-- Endpoint for Standard SOAP clients -->
    <endpoint address="" contract="Accruit.RidgeLine.Web.IBankingService"  
              binding="basicHttpBinding" bindingConfiguration="basicHttpBinding_IBankingService"/>
    <!-- Endpoint for Silverlight clients -->
    <endpoint address="SilverlightEndPoint" contract="Accruit.RidgeLine.Web.IBankingService"
              binding="basicHttpBinding" bindingConfiguration="basicHttpBinding_IBankingService_SilverlightEndPoint" 
              behaviorConfiguration="SilverlightFaultBehavior" />
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
  </service>
</services>


<client>
  <endpoint address="https://domainname.com/BankingService.svc"
      binding="basicHttpBinding" bindingConfiguration="basicHttpBinding_IBankingService"
      contract="BankingService.IBankingService" name="BasicHttpBinding_IBankingService" />

  <endpoint address="https://domainname.com/BankingService.svc/SilverlightEndPoint"
      binding="basicHttpBinding" bindingConfiguration="basicHttpBinding_IBankingService"
      contract="BankingService.IBankingService" name="basicHttpBinding_IBankingService_SilverlightEndPoint" />
</client>

Ответы [ 2 ]

0 голосов
/ 12 мая 2011

Приложение было построено с использованием сервисов wcf, включенных в веб-проект Silverlight, и URI привязки также программно переопределялся с помощью Uri (Application.Current.Host.Source, ".."). Я выделил сервисы wcfв свой собственный проект и удалил код URI (который вызывал проблемы с брандмауэром и доступом DSN, потому что 443 пересылался на другой порт). У меня все еще были проблемы с использованием самозаверяющего сертификата SSL, поэтому нам пришлось приобрести действующий сертификат доКлиент Silverlight будет связываться со службой wcf.

0 голосов
/ 06 мая 2011

В дополнение к моему комментарию, есть несколько вещей, которые нужно проверить:

Отличная ссылка здесь , проверьте сообщение sladapters.

Вот SilverlightРуководство по развертыванию , которое было недавно запущено и доступно от MS.Там довольно солидные вещи.

Многие проблемы, с которыми я столкнулся, связаны с адресами конечных точек, которые кодируются для локального компьютера в файле ServiceReference.ClientConfig.В своих решениях я храню копию для разработчиков и копию для развертывания.Учитывая тот факт, что вы можете перейти к службе, на нее, вероятно, ссылаются неправильно ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...