在本文中,将探讨如何在Azure应用中托管Silverlight应用程序。这是一个逐步的过程,涉及到添加Silverlight项目到Azure解决方案,链接Silverlight应用程序到Web服务,以及设置跨域访问策略。这个过程可能会遇到一些挑战,但通过细致的操作,可以成功地完成设置。
首先,需要将Silverlight项目添加到Azure解决方案中。这可以通过以下步骤完成:
1. 右键点击解决方案,然后选择“添加新项目”。
2. 选择“Silverlight应用程序”,为Silverlight应用程序命名,然后点击“确定”。
3. 当点击“确定”按钮时,会出现一个新的窗口,用于创建将托管Silverlight应用程序的Web应用程序。由于已经有了一个Web应用程序,即WebRole,因此选择第三个选项——“将此Silverlight控件链接到现有网站”,如果它还没有被选中的话。
4. 在底部的三个选项中,确保选择第一个选项,将从这个页面获取一些代码。取消选择“将其设置为起始页面”,并选择“启用Silverlight调试”选项。
5. 有一个已知的WCF服务SDK问题可能会导致至少收到一个非常烦人的消息:“此操作不支持相对URI”。虽然这不是致命的,可以忽略它,但作为一个好的编程习惯,倾向于尽可能消除尽可能多的警告消息。要修复它,打开machine.config
(包括x86和x64版本),并删除以下部分:
<endpoint address="" binding="netTcpRelayBinding" contract="IMetadataExchange" name="sb" />
现在,来将Silverlight应用程序链接到Web服务。这可以通过以下步骤完成:
1. 右键点击上次创建的Silverlight应用程序,然后选择“添加服务引用”。
2. 点击“发现”按钮,它将搜索解决方案中的Web服务。给命名空间一个合理的名称,然后点击“确定”。
3. 转到Silverlight客户端的ServiceReferences.ClientConfig
文件,这是在链接Web服务时创建的。查找客户端标签;
<client>
<endpoint address="http://localhost:51159/SimplicitaServices.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISimplicitaServices" contract="SimplicitaServices.ISimplicitaServices" name="BasicHttpBinding_ISimplicitaServices" />
</client>
4. 将端口号更改为Azure项目执行的端口号。在开发环境中,这通常是81,对于环境可能会有所不同。
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*">
</allow-from>
</policy>
</cross-domain-access>
</access-policy>