如何在Silverlight中调用添加到Cloud Service Project的webservice?

时间:2010-01-19 06:14:03

标签: silverlight web-services

我想问一个问题。我的一位前同事写了一个窗口azure项目,现在我需要继续这个项目。 Web Service位于该窗口的azure项目中,我需要在Silverlight中调用该Web服务。因此,我在现有的Window azure项目中添加了新的silverlight项目。当我试图在silverlight应用程序中添加服务引用时。它显示“找不到与Silverlight3兼容的端点”并且无法创建ServiceReference.config文件。

我不太喜欢网络服务和c#。那么,你能告诉我一步一步在Silverlight上使用Web服务吗?

我还尝试在Web.config文件中更改“basicHttpBinding”和“customBinding”。但它不允许我改变任何东西。因此,如果不在服务器端更改任何内容,我如何在Silverlight中调用webservice?

以下是代码的一部分。

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 :(得分:0)

我认为你不能这样做。 Silverlight仅支持basicHttpBinding和customBinding。我想一个选择是创建一个中间WCF服务层,您只需调用azure服务并将结果传递回Silverlight。

Silverlight客户端 - &gt;中间WCF层 - &gt; Azure服务

但这似乎是不必要的和过度的。你有没有办法控制网络服务?