Как вызвать веб-сервис в Silverlight, который добавлен в Cloud Service Project? - PullRequest
0 голосов
/ 19 января 2010

Я хотел бы задать вопрос. Один из моих бывших коллег написал один проект лазурного окна, и теперь мне нужно продолжить этот проект. Веб-сервис находится в этом окне Azure Project, и мне нужно вызвать этот веб-сервис в Silverlight. Поэтому я добавляю новый проект silverlight в этот существующий проект Window Azure. И когда я пытаюсь добавить ссылку на службу в приложении Silverlight. Он показывает «Не найдена конечная точка, совместимая с Silverlight3» и не может создать файл ServiceReference.config.

Я не слишком семья с веб-сервисом и c #. Итак, не могли бы вы рассказать мне шаг за шагом об использовании веб-сервиса в Silverlight.

Я также пытался изменить "basicHttpBinding" и "customBinding" в файле Web.config. Но это не позволяет мне ничего менять. Итак, не меняя ничего на стороне сервера, как я могу вызвать веб-сервис в silverlight?

Вот часть кода.

IEventHandler.cs
`[OperationContract]
        [WebGet(UriTemplate = "Holidays", ResponseFormat = WebMessageFormat.Xml)]
        List<Holidays> GetHolidays();`

EventHandler.svc
`public List<Holidays> GetHolidays()
        {
            //database declaration for purpose of accessing the db.
            Database db = new Database();

            //dg.getHolidays is found in the Database class.
            List<Holidays> holidays = db.getHolidays();

            return holidays;
        }`

Web.config
`<system.serviceModel>
    <bindings>
      <webHttpBinding>
        <binding name="webBinding"
                 maxBufferPoolSize="2147483647"
                 maxBufferSize="2147483647"
                 maxReceivedMessageSize="2147483647" >
          <readerQuotas
            maxArrayLength="2147483647"
            maxStringContentLength="2147483647"/>
          <!--<security mode="Transport">
          </security>-->
        </binding>
      </webHttpBinding>
    </bindings>
    <behaviors>
      <endpointBehaviors>
        <behavior name="webBehavior">
          <webHttp />
          <enableWebScript/>
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="Rest_EventHandler_WebRole.EventHandlerBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service behaviorConfiguration="Rest_EventHandler_WebRole.EventHandlerBehavior"
        name="Rest_EventHandler_WebRole.EventHandler">
        <endpoint address="" behaviorConfiguration="webBehavior" binding="webHttpBinding"
          bindingConfiguration="webBinding" contract="Rest_EventHandler_WebRole.IEventHandler">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>
  </system.serviceModel>`

Для silverlight, как я могу вызвать этот WebService? У меня нет разрешения на изменение серверной части. Нужно ли использовать sisvcutil.exe? Не могли бы вы помочь мне с моей проблемой?

1 Ответ

0 голосов
/ 19 января 2010

Я не думаю, что вы можете сделать это. Silverlight поддерживает только basicHttpBinding и customBinding. Я полагаю, что одним из вариантов будет создание среднего слоя службы WCF, в котором вы просто вызываете службу Azure и передаете результат обратно Silverlight.

Клиент Silverlight -> Средний слой WCF -> Служба Azure

Но это кажется ненужным и излишним. Нет ли способа получить контроль над веб-службой?

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