0

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

我已经完成了以下安装:

  1. VS 2008 与 SP1
  2. Silverlight 2.0 SDK 和 exe
  3. VS 2008 的 Silverlight 工具
  4. 苔藓植物 2007

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

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

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

4 回答 4

1

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

将 ASP.NET AJAX 与 SharePoint 集成

祝你好运!

于 2008-12-22T22:33:51.303 回答
0

您最好的起点是通读 u2u 上的 Silverlight for SharePoint 蓝图 - http://www.codeplex.com/SL4SP

于 2008-12-22T10:13:54.263 回答
0

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

于 2009-02-19T19:16:24.220 回答
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>

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

于 2008-12-22T21:24:42.863 回答