我想问一个问题。我的一位前同事写了一个窗口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吗?你能帮助我解决我的问题吗?
答案 0 :(得分:0)
我认为你不能这样做。 Silverlight仅支持basicHttpBinding和customBinding。我想一个选择是创建一个中间WCF服务层,您只需调用azure服务并将结果传递回Silverlight。
Silverlight客户端 - &gt;中间WCF层 - &gt; Azure服务
但这似乎是不必要的和过度的。你有没有办法控制网络服务?