【问题标题】:Silverlight WebPart in SharepointSharepoint 中的 Silverlight WebPart
【发布时间】:2011-03-18 22:35:34
【问题描述】:

我是 Silverlight 2.0 的新手,实际上我正在尝试在 Sharepoint 2007 中将 Silverlight 部署为 Web 部件。

我已经完成了以下安装:

  1. VS 2008 与 SP1
  2. Silverlight 2.0 SDK 和 exe
  3. 适用于 VS 2008 的 Silverlight 工具
  4. 莫斯 2007

我已经创建了示例 Silverlight 应用程序,并从解决方案的 bin 目录中获取了 xap 文件。

然后我编写了一个标准的 Sharepoint webpart,其中引用了 Web.ExtensionsMicrosoft.Silverlight dll:

using System;
using System.Runtime.InteropServices;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Serialization;
using System.Web.UI.SilverlightControls;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.WebPartPages;

namespace SLWeb_Part1
{
    [Guid("c890f832-05d2-4724-ae25-5f34c827c6c2")]
    public class SLWeb_Part1 : System.Web.UI.WebControls.WebParts.WebPart
    {
        public SLWeb_Part1()
        {
        }

        [WebBrowsable(true),
        Personalizable(PersonalizationScope.User),
        WebDescription("Location of the Silverlight XAP package"),
        WebDisplayName("XAP Location")]
        public string XAPSource { get; set; }

        [WebBrowsable(true),
        Personalizable(PersonalizationScope.User),
        WebDescription("Silverlight Controld ID "),
        WebDisplayName("Control ID")]
        public string ControlID { get; set; }

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
            if (scriptManager == null)
            {
                scriptManager = new ScriptManager();
                this.Controls.Add(scriptManager);
            }
        }

        protected override void CreateChildControls()
        {
            base.CreateChildControls();

            Silverlight sl = new Silverlight();
            sl.Source = XAPSource;
            sl.ID = ControlID;
            sl.Width = new Unit(400);
            sl.Height = new Unit(400);

            this.Controls.Add(sl);
        }
    }

我也将其部署到 Sharepoint 站点,然后我进入 Sharepoint 站点的 web.config 文件以包含 Silverlight 和 Web.Extension 程序集,如下所示:

<add assembly="System.Web.Silverlight, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

然后我在 IIS 中将 application/x-silverlight-app 包含为 Web 应用程序的 MIME 类型。

做完这一切之后……我可以像往常一样浏览网站,但是我看不到 Silverlight 组件正在运行……而且它也没有抛出任何错误……

谁能帮我尽快解决这个问题? 我是否遗漏了配置中的任何步骤?

提前致谢。

【问题讨论】:

    标签: silverlight-2.0


    【解决方案1】:

    我能够通过确保我的 SharePoint web.config 为 ASP.NET AJAX 正确配置来解决我的问题。默认情况下未正确设置。有关如何执行此操作的详细信息,请参阅此站点:

    Integrating ASP.NET AJAX with SharePoint

    祝你好运!

    【讨论】:

      【解决方案2】:

      最好的起点是阅读来自 u2u 的 Silverlight for SharePoint 蓝图 - http://www.codeplex.com/SL4SP

      【讨论】:

        【解决方案3】:

        我正在尝试做同样的事情并遇到同样的问题。我已经追踪到我认为是 ScriptManager 的问题。

        在一个普通的 ASPX 页面中(我的 Silverlight 可以正常工作),ScriptManager 似乎将它添加到页面中:

        <script src="/ScriptResource.axd?d=Un3ROg6ZO8lU8fUlhDz-soUWbkyxgh5pk-teueIPxbpft-XX1Z5TrN4P3iF-wiGinTLoxOt5mA420kQULjqoDnUjO5gjwu0sPPlLgxOq-5g1&amp;t=ffffffff888edfb1" type="text/javascript">
        </script>
        <script type="text/javascript"> 
        //<![CDATA[
        if (typeof(Sys) === 'undefined') throw new Error('ASP.NET Ajax client-side framework failed to load.');
        //]]>
        </script>
        

        但是,我的 WebPart 添加的 ScriptManager 不会将此代码添加到页面中。因此,当浏览器到达以下尝试加载 Silverlight 的代码时,它会因为未定义 Sys 对象而失败。

        <script type="text/javascript"> 
        //<![CDATA[
        Sys.UI.Silverlight.Control.createObject('Xaml1_parent', '\u003cobject type="application/x-silverlight-2" id="Xaml1" style="height:100%;width:500px;">\r\n\t\u003cparam name="MinRuntimeVersion" value="2.0.31005.0">\r\n\r\n\t\u003c/param>\u003ca href="http://go2.microsoft.com/fwlink/?LinkID=114576&amp;v=2.0">\u003cimg src="http://go2.microsoft.com/fwlink/?LinkID=108181" alt="Get Microsoft Silverlight" style="border-width:0;" />\u003c/a>\r\n\u003c/object>');
        //]]>
        </script>
        

        希望这至少有助于推动讨论。

        【讨论】:

          【解决方案4】:

          在关注 Toms 的帖子后,如果使用 .net 3.5,请将 webconfig system.web.extensions 值从 1.06... 更改为 3.5.0.0

          【讨论】:

            猜你喜欢
            • 2010-10-09
            • 2011-11-29
            • 2014-09-28
            • 2010-10-12
            • 1970-01-01
            • 2011-10-24
            • 2019-04-11
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多