我在现有的Sitefinity站点内实现新的Messenger Connect功能以启用使用Live ID的客户端登录时遇到问题.

也就是说,当我使用以下代码实现客户端功能时:

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

... 我在Firebug中发现了三个我无法正确识别的错误:

系统.ArgumentTypeException:类型为"Sys"的对象_"应用程序"不能为空

(在ScriptResource.axd中?d=.第4993行)

系统.申请_doInitialize不是一个好主意

(在MicrosoftAjaxBase.js第1行)

系统.无效手术例外情况:

(在ScriptResource.axd中?d=.984行)

只有当我包含来自js.live.net的loader.js脚本时,才会触发错误.

EDIT:似乎错误不一定是按这个顺序触发的.刷新页面似乎会扰乱这些错误和/或引入其他错误,例如,1842行的Sys.ParameterCountExceptionin ScriptResource.axd?....

推荐答案

嘿,我在这里try 了一些组合,有效的组合是:

1) 将ScriptManager的ScriptMode属性设置为Release

2)使用ClientScript类在CodeBehind Page_Load事件中加载MSN库:

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

Firebug不再显示任何错误,在我的例子中,身份验证窗口将按需要打开.

希望有帮助!

EDIT

如前所述,下面是我用来避免这个问题的全部代码:

Default.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");
    }
}

网状物配置

<?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)目前没有响应.

Asp.net相关问答推荐

Azure DevOps 构建管道正在发布旧的/缓存的构建工件

Razor 页面客户端站点验证不起作用

C# - 将 xyz 平铺转换为纬度/经度,反之亦然,给出不同的结果

jQuery隐藏字段

Azure 自定义控制器/API .Net 后端

Server.Transfer 在执行子请求时抛出错误.如何解决?

我可以在 .net 核心中使用 Entity Framework 6(非核心)吗?

下载功能在 asp.net 的更新面板中不起作用

是否可以使用 Membership API 更改用户名

我应该使用字节还是整数?

asp.net cookie、身份验证和会话超时

从 C# AsyncCTP 使用 ExecuteReaderAsync 的任何缺点

在 asp.net 中为动态 PDF 指定文件名

无法序列化会话状态

ASP.NET 中的全局资源与本地资源

如何在 C# 应用程序中调用 VBScript 文件?

如何从 ASP.Net 发布然后重定向到外部 URL?

Cache.Add 绝对过期 - 是否基于 UTC?

使用 Twitter Bootstrap 在 @html.actionlink 中显示 html

配置授权服务器端点