2010-11-18 4 views
37

Ich habe ein Problem beim Implementieren der neuen Messenger Connect-Funktion in einer vorhandenen Sitefinity-Site, um Client-Logins mit Live IDs zu aktivieren.JavaScript-Fehler bei Verwendung der Messenger Connect clientseitigen Bibliothek in ASP.NET

Das heißt, wenn ich den folgenden Code bin mit der clientseitige Funktionalität zu implementieren:

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

... ich drei Fehler in Firebug, dass ich nicht ganz richtig identifizieren kann:

Sys.ArgumentTypeException: Objekt vom Typ 'Sys._Application' kann nicht in Typ 'Sys.IDisposable' konvertiert werden. Parametername: Objekt

Sys.Application._doInitialize ist keine Funktion

(in (in ScriptResource.axd d = .... Linie 4993?) MicrosoftAjaxBase.js Linie 1)

Sys.InvalidOperationException: Die sc ript 'MicrosoftAjaxGlobalization.js' wurde mehrfach referenziert. Wenn explizit auf Microsoft AJAX-Skripts verweist, legen Sie die Eigenschaft MicrosoftAjaxMode des ScriptManager auf Explicit.

(in ScriptResource.axd? D = .... Linie 984)

Die Fehler nur dann ausgelöst werden, wenn ich das loader.js Skript von js.live.net umfassen.

BEARBEITEN: Scheint, dass die Fehler nicht unbedingt in dieser Reihenfolge ausgelöst werden. Das Aktualisieren der Seite scheint diese Fehler zu mischen und/oder andere einzuführen, wie zum Beispiel eine Sys.ParameterCountException in ScriptResource.axd?... auf der Leitung 1842.

+0

Ich hatte diesen Fehler auch und hatte noch kein Glück, eine Lösung zu finden. Es scheint, dass Messenger Connect seine eigene Version der AJAX-Loader-Funktionalität verwendet und nicht gut mit der vorhandenen Version spielt, wenn Sie sie für andere Dinge verwenden (wie das asynchrone Laden von allem anderen). –

+0

Sehen Sie, ob dies auch unabhängig von dem verursachenden Täter hilft, um zu sehen, ob es hilft: http://StackOverflow.com/Questions/19103128/javascript-runtime-error-for-microsoft-ajax-scripts – atconway

Antwort

3

Hey, habe ich versucht, einige Kombinationen hier, und derjenige, der war gearbeitet:

1) Stellen Sie die Scriptmode-Eigenschaft des Script zu Veröffentlichung;

2) Laden der Bibliothek in MSN Codebehind Page_Load Fall die ClientScript-Klasse:

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

Firebug wird mehr einen Fehler nicht angezeigt wird, und in meinem Fall wird das Authentifizierungsfenster nach Wunsch zu öffnen.

Hoffe es hilft!

EDIT

Wie bereits gesagt, hier folgt den ganzen Code, den ich dieses Problem zu vermeiden, verwenden:

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

Um zu sehen, es läuft, Sie http://labs.asteria.com.br/wlm zugreifen können. Es scheint, dass die Einwilligung URL (https://consent.live.com/AccessToken.aspx) zu diesem Zeitpunkt nicht reagiert.

+0

Ich arbeite derzeit nicht Bei jedem Projekt, bei dem dies der Fall ist, werde ich es gerne als beantwortet markieren, wenn jemand diese Antwort überprüfen kann. –

+0

Vielleicht Bill Forney wird in der Lage sein zu bestätigen ... –

+0

Verleihung der Kopfgeld als beste Antwort, auch wenn unbestätigt. Wäre schön, den ganzen Code zu sehen, wenn nicht zu lange. –

Verwandte Themen