Как правильно настроить службу WCF с поддержкой Silverlight?

EDIT: я начал закрытое голосование по этому вопросу, потому что решил проблему. У меня все было хорошо, но ссылка на средство перезаписи URL-адресов ASP, которое я скачал и удалил некоторое время назад, все еще имела ссылку в IIS. Это сообщение на форуме от Waclaw Stypula (тот, что со ступеньками) случайно помог мне отследить это. Когда я запустил команду запуска, IIS сообщил мне, что (очевидно) не может найти DLL-библиотеку перезаписи. Я удалил ссылку, и после этого приложение заработало нормально.


Я следую руководствам silverlight.net от Джесси Либерти. В настоящее время я пытаюсь выполнить третье руководство, но упираюсь в стену под заголовок «СОЗДАТЬ ВЕБ-СЕРВИС» (примерно на полпути вниз).

Во-первых, когда я создаю новую службу, добавляя ее в решение, в учебнике указывается, что необходимо создать три файла; IService1.vb, Service1.svc и Service1.svc.vb. Я не получаю файл IService1.vb, когда добавляю службу в решение. Я скачал копия проекта, который они предоставили, и файл Service1.svc.vb там, поэтому я добавил его вручную и скопировал содержимое файла. В учебнике указано, что это учебник VB, но отображает C# на прилагаемом снимке экрана, так что, возможно, проблема в этом.

После того, как я создам все файлы, похожие на учебные пособия (скопируйте/вставьте, чтобы убедиться, что у меня нет опечатки), я пытаюсь добавить ссылку на службу и получаю следующую ошибку:

The service class of type KeyboardControl_Web.Service1 both defines a ServiceContract and inherits a ServiceContract from type KeyboardControl_Web.IService1. Contract inheritance can only be used among interface types. If a class is marked with ServiceContractAttribute, it must be the only type in the hierarchy with ServiceContractAttribute. Consider moving the ServiceContractAttribute on type KeyboardControl_Web.IService1 to a separate interface that type KeyboardControl_Web.IService1 implements.

Я пробовал гуглить разные части сообщения, но не нашел много полезной информации.

Вот код для разных файлов:

//IService1.vb
Imports System.ServiceModel

' NOTE: If you change the class name "IService1" here, you must also update
'       the reference to "IService1" in Web.config.
<ServiceContract()> _
Public Interface IService1

    <OperationContract()> _
   Function GetAllLocations() As List(Of Address)

End Interface

//Service1.svc.vb
Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Runtime.Serialization
Imports System.ServiceModel
Imports System.Text

' NOTE: If you change the class name "Service1" here, you must also
'       update the reference to "Service1" in Web.config and in the
'       associated .svc file.

Public Class Service1
    Implements IService1
    Public Function GetAllLocations() As List(Of Address) Implements IService1.GetAllLocations
        Dim db As New DataClasses1DataContext()
        Dim matchingCustomers = From cust In db.userControlDemos Select cust
        'Return matchingCustomers.ToList()
    End Function
End Class

Я новичок в Silverlight/WCF в целом, а также в интерфейсах и службах. Можете ли вы, ребята, помочь мне встать на правильный путь?

РЕДАКТИРОВАТЬ: я должен добавить, что я использую Visual Studio 2008 в Windows Vista Business SP1.


person Anders    schedule 27.01.2009    source источник


Ответы (1)


если у вас установлены инструменты Silverlight для Visual Studio, вместо использования шаблона WCF по умолчанию рассмотрите возможность использования «службы WCF с поддержкой Silverlight», которая упрощает работу и устанавливает всю необходимую конфигурацию. Этот новый шаблон был представлен в бета-версии 2 и существует до сих пор (ссылка: http://timheuer.com/blog/archive/2008/06/06/changes-to-accessing-services-in-silverlight-2).-beta-2.aspx).

person Tim Heuer    schedule 27.01.2009