2008-12-22 7 views
0

Je suis nouveau à Silverlight 2.0 et je suis en train d'essayer de déployer Silverlight comme webpart en 2007. SharepointSilverlight dans webpart Sharepoint

Je l'ai fait les installations suivantes:

  1. VS 2008 avec SP1
  2. Silverlight 2.0 SDK et exe
  3. Silverlight Tools pour VS 2008
  4. MOSS 2007

J'ai créé l'exemple d'application Silverlight et a obtenu le fichier XAP à partir du répertoire bin de la solution.

Alors j'ai écrit un webpart standard Sharepoint avec une référence à la fois Web.Extensions et Microsoft.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); 
     } 
    } 

I a également déployé le même sur le site Sharepoint, alors je fait une entrée dans le fichier web.config du site Sharepoint comprennent l'assemblage comme de Silverlight et Web.Extension:

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

J'inclus application/x-silverlight-app en tant que type MIME pour l'application Web dans IIS.

Après avoir fait tout cela ... j'ai pu naviguer sur le site, comme d'habitude, mais je ne pouvais pas voir le composant Silverlight en cours d'exécution .... et il est pas jeter toute erreur aussi ...

Quelqu'un peut-il m'aider à résoudre ce problème au plus tôt? Ai-je oublié des étapes dans la configuration?

Merci d'avance.

Répondre

0

Je suis en train de faire la chose même et avoir le problème même. Je l'ai suivi jusqu'à ce que je crois être un problème avec le ScriptManager.

Dans une page ASPX normale (où mon Silverlight fonctionne correctement), le ScriptManager semble ajouter à la page:

<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> 

Cependant, le ScriptManager ajouté par mon webpart ne pas ajouter ce code à la page . Ainsi, lorsque le navigateur atteint le code suivant qui tente de charger Silverlight, il échoue car l'objet Sys n'est pas défini.

<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> 

Espérons que cela aidera au moins à faire avancer la discussion.

1

j'ai pu résoudre mon problème en veillant à ce que mon SharePoint web.config a été correctement configuré pour ASP.NET AJAX. Il n'est pas configuré correctement par défaut. Voir ce site pour plus de détails sur la façon de le faire:

Integrating ASP.NET AJAX with SharePoint

Bonne chance!

0

Après la publication de Toms, modifiez les valeurs de l'extension webconfig system.web.extensions de 1.06 ... à 3.5.0.0 si vous utilisez .net 3.5

Questions connexes