2015-03-23 1 views
0

У меня есть приложение Silverlight с самообслуживанием wcf, которое я сам размещаю в нем. Когда я публикую приложение с сервисом iis7 на сервере Windows 2008, я не вижу никаких данных из службы в моем приложении (услуга не вызывается). Пока приложение для отладки я вижу данные, поступающие из servcie (данные таблицы сервера sql). Также, когда я публикую одно и то же приложение в своей локальной системе, то есть IIS-7 на windows7, я возможность доступа к сервису и данным, в любой системе в сети, а также в системе, где она публикуется. Я установил все возможные настройки на iis7, которые я нашел, а также URL-адрес для обслуживания правилен везде (динамически сгенерирован), так как я опубликовал его успешно на iis 7 в Windows 7, только приложение не обращается к wcf при публикации на iis на сервере Windows. Также я прочитал все сообщения, доступные здесь, но не нашел точного решения. Настройки для IIS 7 и ФОС я сделал этоПроблемы с публикацией службы wcf, включенной в Silverlight, на iis7 и сервере Windows 2008

  • -aspnet_iisreg.exe (установлено)
  • -вса требуется установка в окнах функции включать и выключать.
  • -on iis, все разрешения установлены для нужного пользователя.
  • -Настройка выполняется в типе mime и картировании обработчиков.
  • -Я могу успешно просмотреть службу wcf без ошибок, и тот же URL-адрес используется при вызове службы из приложения.

Вот часть моего кода, где я динамически создаю URL-адрес конечной точки службы.

Try 

     busyIndicator.IsBusy = True 
     mService.Endpoint.Address = New EndpointAddress(DynamicEndpointHelper.ResolveEndpointUrl(mService.Endpoint.Address.Uri.ToString(), 
    App.Current.Host.Source.ToString()))    
     mService.GetProjectNamesAsync() 
    Catch ex As Exception 
     MessageBox.Show(ex.Message) 
    End Try 
End Sub 

Public Class DynamicEndpointHelper 
    ' Put the development server site URL including the trailing slash 
    ' This should be same as what's set in the Dropthings web project's 
    ' ' properties as the URL of the site in development server 
    Private Const BaseUrl As String = "http://localhost:1632/" 

    Public Shared Function ResolveEndpointUrl(endpointUrl As String, xapPath As String) As String 
     Dim baseUrl__1 As String = xapPath.Substring(0, xapPath.IndexOf("ClientBin")) 
     Dim relativeEndpointUrl As String = endpointUrl.Substring(BaseUrl.Length) 
     Dim dynamicEndpointUrl As String = baseUrl__1 & relativeEndpointUrl 
     Return dynamicEndpointUrl 
    End Function 
End Class 

web.config часть:

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="testing.Web.Service1.basicHttpBinding" > 
      <security mode="Transport"> 
      <transport clientCredentialType="Windows" /> 
      </security> 
     </binding>   
     </basicHttpBinding> 
    </bindings> 
    <services> 
     <service name="testing.Web.Service1"> 
     <endpoint address="" binding="basicHttpBinding" contract="testing.Web.Service1" />  
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name=""> 
      <serviceMetadata httpGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" 
     multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel> 

ServiceReference.ClientConfig часть

<configuration> 
    <system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="BasicHttpBinding_Service1" maxBufferSize="2147483647" 
      maxReceivedMessageSize="2147483647"> 
      <security mode="None" /> 
     </binding>  
     </basicHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="http://localhost:1632/Service1.svc" binding="basicHttpBinding" 
     bindingConfiguration="BasicHttpBinding_Service1" contract="sr_service1.Service1" 
     name="BasicHttpBinding_Service1" /> 
    </client> 
    </system.serviceModel> 
</configuration> 
+0

Можете ли вы разместить код? Если ваше устройство Silverlight самообслуживает что-то, что будет работать на вашем компьютере клиентов. Это не то, что вы хотите, и то, что он позволит. – nvoigt

+0

Можете ли вы добавить часть, в которой вы ее разместили? – nvoigt

+0

Я имел в виду, где вы * host * it. Вы сказали, что вы сами принимаете это. В серебряном свете. Это означает, что у вас есть строка в silverlight, где вы открываете хост службы. Может быть, вы не принимаете это самостоятельно? – nvoigt

ответ

0

Конечной адрес по sivlerlight приложение пытается вызвать определяется в ServiceReference.clientconfig как: http://localhost:1632/Service1.svc , Я предполагаю, что это не фактический развернутый адрес, который вы хотите использовать. См. Это article о том, как динамически назначать адрес конечной точки службы.

+0

Я сгенерировал адрес конечной точки динамически, так как его отлично работает, когда я публикую свое приложение на iis7 с помощью Windows 7 (например, на моей локальной машине). Но когда я публикую приложение на производственном сервере (то есть iis7 с сервером Windows 2008), он не извлекает данные. Теперь я также могу видеть URL-адрес службы в скрипаче, но данные не поступают из wcf. –