Sharepoint中的Silverlight WebPart

时间:2008-12-22 10:05:57

标签: silverlight-2.0

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

我完成了以下安装:

  1. VS 2008 SP1;
  2. Silverlight 2.0 SDK和exe
  3. 适用于VS 2008的Silverlight工具
  4. MOSS 2007
  5. 我已经创建了示例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" />
    

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

    完成所有这些之后......我能像往常一样浏览网站,但我看不到Silverlight组件正在运行....而且它也没有抛出任何错误......

    有人能帮助我最早解决这个问题吗? 我是否会错过配置中的任何步骤?

    提前致谢。

4 个答案:

答案 0 :(得分:1)

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

Integrating ASP.NET AJAX with SharePoint

祝你好运!

答案 1 :(得分:0)

您最好的出发点是从u2u的人那里阅读Silverlight for SharePoint蓝图 - http://www.codeplex.com/SL4SP

答案 2 :(得分:0)

我正在尝试做同样的事情,并遇到同样的问题。我已将其跟踪到我认为是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>

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

答案 3 :(得分:0)

在关注Toms后,如果使用.net 3.5,则将webconfig system.web.extensions值从1.06改为3.5.0