2010-11-18 31 views
37

Je rencontre un problème lors de l'implémentation de la nouvelle fonctionnalité Messenger Connect dans un site Sitefinity existant pour activer les connexions client à l'aide d'ID Live.Erreur Javascript lors de l'utilisation de la bibliothèque côté client Messenger Connect dans ASP.NET

A savoir, quand je suis en utilisant le code suivant pour implémenter la fonctionnalité côté client:

<head runat="server"> 
    <script type="text/javascript" src="http://js.live.net/4.1/loader.js"></script> 
</head> 
<body> 
    <form runat="server" id="form1"> 
    <asp:ScriptManager ID="ScriptManager1" runat="server"/> 
    <wl:app 
     client-id="<%= ConfigurationManager.AppSettings["wl_wrap_client_id"] %>" 
     scope="WL_Profiles.View" 
     callback-url="<%= ConfigurationManager.AppSettings["wl_wrap_client_callback"] %>?wl_session_id=<%=SessionId %>" 
     channel-url="/channel.htm"> 
    </wl:app> 

... Je reçois trois erreurs dans Firebug que je ne peux pas tout à fait correctement identifier:

Sys.ArgumentTypeException: l'objet de type 'Sys._Application' ne peut pas être converti en type 'Sys.IDisposable'. Nom du paramètre: objet

Sys.Application._doInitialize est pas une fonction

(en (en ScriptResource.axd d = .... ligne 4993?) MicrosoftAjaxBase.js ligne 1)

Sys.InvalidOperationException: Le sc ript 'MicrosoftAjaxGlobalization.js' a été référencé plusieurs fois. Si référençant explicitement les scripts Microsoft AJAX , définissez la propriété MicrosoftAjaxMode du ScriptManager sur Explicit.

(en ScriptResource.axd? D = .... ligne 984)

Les erreurs ne sont déclenchées quand j'inclure le script loader.js de js.live.net.

EDIT: Apparaît que les erreurs ne sont pas nécessairement déclenchées dans cet ordre. L'actualisation de la page semble mélanger ces erreurs et/ou en introduire d'autres, par exemple Sys.ParameterCountException dans ScriptResource.axd?... sur la ligne 1842, par exemple.

+0

J'ai aussi eu cette erreur et je n'ai pas encore eu de chance de trouver une solution. Il semble que Messenger Connect utilise sa propre version de la fonctionnalité du chargeur AJAX et ne fonctionne pas bien avec la version existante si vous l'utilisez pour d'autres choses (comme le chargement asynchrone de tout le reste). –

+0

Voir si cela aide aussi bien indépendamment du coupable d'origine pour voir si cela aide: http://stackoverflow.com/questions/19103128/javascript-runtime-error-for-microsoft-ajax-scripts – atconway

Répondre

3

Hey, j'ai essayé quelques combinaisons ici, et celui qui a travaillé était:

1) Définissez la propriété ScriptMode du ScriptManager de presse;

2) Charger la bibliothèque MSN en cas CodeBehind Page_Load, en utilisant la classe ClientScript:

protected void Page_Load(object sender, EventArgs e) 
{ 
    ClientScript.RegisterClientScriptInclude(this.GetType(), "live", "http://js.live.net/4.0/loader.js"); 
} 

Firebug ne montre aucune erreur plus, et dans mon cas, la fenêtre d'authentification ouvre comme vous le souhaitez.

J'espère que ça aide!

EDIT

Comme dit précédemment, suit ici tout le code que j'utilise pour éviter ce problème:

par défaut.ASPX

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wl="http://apis.live.net/js/2010"> 
<head> 
    <title>SignIn Example</title> 
    <script type="text/javascript"> 
     function appLoaded(appLoadedEventArgs) { 
     } 
     function signInCallback(signInCompletedEventArgs) { 
      if (signInCompletedEventArgs.get_resultCode() === Microsoft.Live.AsyncResultCode.success) 
      { 
       alert('Sign-in successful.'); 
      } 
      else 
      { 
       alert('Sign-in failed.'); 
      } 
     } 
    </script> 
</head> 
<body> 
    <form runat="server" id="form1"> 

    <asp:ScriptManager ID="ScriptManager1" runat="server" ScriptMode="Release"></asp:ScriptManager> 

    <wl:app channel-url="http://labs.asteria.com.br/wlm/Channel.html" 
     callback-url="http://labs.asteria.com.br/wlm/Callback.aspx?wl_session_id=<%= Session.SessionID %>" 
     client-id="0000000044052209" 
     scope="WL_Profiles.View" 
     onload="{{appLoaded}}"> 
    </wl:app> 
    <wl:signin 
     id="signInControl" 
     signedintext="Signed in. Click to sign out." 
     signedouttext="Click to sign in." 
     onsignin="{{signInCallback}}" /> 
    </form> 
</body> 
</html> 

Default.aspx.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     ClientScript.RegisterClientScriptInclude(this.GetType(), "live", "http://js.live.net/4.0/loader.js"); 
    } 
} 

Web.config

<?xml version="1.0"?> 
<configuration> 
<appSettings> 
    <add key="wl_wrap_client_secret" value="[YOUR SECRET KEY]"/> 
    <add key="wl_wrap_client_id" value="0000000044052209"/> 
    <add key="wl_wrap_client_callback" value="http://labs.asteria.com.br/wlm/Callback.aspx"/> 
</appSettings> 

<connectionStrings/> 
<system.web> 
    <customErrors mode="Off"/> 
    <compilation debug="true" targetFramework="4.0"></compilation> 
    <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/> 
</system.web> 
</configuration> 

Pour voir fonctionner, vous pouvez accéder http://labs.asteria.com.br/wlm. Il semble que l'URL de consentement (https://consent.live.com/AccessToken.aspx) ne répond pas pour le moment.

+0

Je ne travaille pas actuellement sur n'importe quel projet impliquant ceci si quelqu'un peut vérifier cette réponse, je marquerai avec joie comme réponse. –

+0

Peut-être que Bill Forney sera en mesure de confirmer ... –

+0

Attribuer la prime comme meilleure réponse, même si elle n'est pas confirmée. Serait bien de voir tout le code si pas trop longtemps. –