2010-11-18 2 views
37

Live ID를 사용하여 클라이언트 로그인을 사용하려면 기존 Sitefinity 사이트 내에 새로운 Messenger Connect 기능을 구현하는 데 문제가 있습니다. 내가 클라이언트 측 기능을 구현하기 위해 다음 코드를 사용하고 때ASP.NET에서 Messenger Connect 클라이언트 측 라이브러리를 사용할 때 Javascript 오류가 발생합니다.

즉, :

:

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

를 ... 나는 아주 정확하게 식별 할 수 방화범의 세 가지 오류가 발생할 수

Sys.ArgumentTypeException : 'Sys._Application'형식의 개체를을 'Sys.IDisposable'형식으로 변환 할 수 없습니다. 파라미터 명칭 : 오브젝트

Sys.Application._doInitialize없는 함수

(IN (ScriptResource.axd에서 D = ... 행 4993는?) MicrosoftAjaxBase.js 줄 1)

Sys.InvalidOperationException : sc ript 'MicrosoftAjaxGlobalization.js' 이 여러 번 참조되었습니다. Microsoft AJAX 스크립트 을 명시 적으로 참조하는 경우 ScriptManager의 MicrosoftAjaxMode 속성을 Explicit으로 설정하십시오.

(ScriptResource.axd에서? = D 선 984 ...)은 I js.live.net에서 loader.js 스크립트를 포함 할 때 에러에만 트리거

.

EDIT : 오류가 반드시 그 순서로 실행되는 것은 아닙니다. 페이지를 새로 고치면 해당 오류를 뒤섞거나 예를 들어 Sys.ParameterCountException (ScriptResource.axd?...)과 같은 다른 오류를 삽입하는 것처럼 보입니다.

+0

나는이 오류도 있었고 아직 해결 방법을 찾지 못했습니다. 메신저 커넥트는 자체 버전의 AJAX 로더 기능을 사용하며 다른 버전 (비동기식로드 기타)에 사용하면 기존 버전과 잘 작동하지 않는 것 같습니다. –

+0

원본이 범인인지 여부에 관계없이 이것이 도움이되는지 확인하십시오. http://stackoverflow.com/questions/19103128/javascript-runtime-error-for-microsoft-ajax-scripts – atconway

답변

3

이봐, 내가 여기에 몇 가지 조합을 시도하고, 일을 하나했다 :

1) 릴리스에의 ScriptManager의 ScriptMode 속성을 설정;

2 )를 ClientScript 클래스를 이용하여 숨김 Page_Load 이벤트에서 MSN 라이브러리를로드

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

방화범 더 이상 에러를 나타내는 것이 아니라, 필요에 따라 제 경우, 인증 창을 여는.

희망이 있습니다.

기본값 :

전에 말했듯이 편집

, 여기에 내가이 문제를 방지하기 위해 사용하는 전체 코드를 다음과 같습니다.영문

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

http://labs.asteria.com.br/wlm에 액세스 할 수 있습니다, 그것은 실행 참조하십시오. 현재 동의 URL (https://consent.live.com/AccessToken.aspx)이 응답하지 않는 것 같습니다.

+0

현재 작동하지 않습니다. 누구든지이 답변을 확인할 수 있다면 기꺼이 답변으로 표시 할 것입니다. –

+0

아마도 빌 포니가 확인할 수있을 것입니다 ... –

+0

미확인 경우에도 최상의 대답으로 현상금을 수여합니다. 너무 길지 않으면 모든 코드를 보는 것이 좋을 것입니다. –

관련 문제