SharePoint中使用CQWP之后点击CopyUtil.aspx弹出登陆框的问题

最近学习SharePoint 2007 中的 内容查询web部件(Content Query Web Part,简称:CQWP),为了能够跨站点访问列表,整个web应用程序,包括网站集以及所有网站全部启用的匿名访问.

然后在网站集的某一子网站中的首页进行编辑,并添加CQWP,在设置好查询条件之后, 保存页面。页面上出现了查询出来的结果了。点击 链接 ,却弹出登陆框让我输入账户和密码。 明明启用了匿名访问。为何还会弹出登陆框? 为了验证的确是启用了匿名访问。 我关闭了所有的浏览器,重新打开浏览器,直接输入该列表项的地址,结果证明是可以直接查看的。 

后来注意了一下,CQWP查询出来的结果的链接地址是通过一个 CopyUtil.aspx 来进行跳转到目标的..于是Google了一哈。。总算是找到解决方案了.

继承 Microsoft.SharePoint.ApplicationPages.CopyUtil 类,重写AllowAnonymousAccess属性

Microsoft.SharePoint.ApplicationPages.dll 在 C:\Program Files\Common Files\microsoft shared\Web Server Extensions\12\CONFIG\BIN\ 下

namespace ExtCopyUitl
{
    public class CopyUtil : Microsoft.SharePoint.ApplicationPages.CopyUtil
    {
        protected override bool AllowAnonymousAccess
        {
            get
            {
                return true;
            }
        }
    }
}

记得加上强签名,编译成功后.到项目文件夹的bin文件夹中找到 DLL ,扔到GAC中去并 iisreset

然后在 C:\Program Files\Common Files\microsoft shared\Web Server Extensions\12\TEMPLATE\LAYOUTS\ 下找到CopyUtil.aspx 页面

打开后再页面文件中加入

<%@ Assembly Name="ExtCopyUitl, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1c5c45522ed4cd98" %>

记得加入 Name 属性,我的是 ExtCopyUitl, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1c5c45522ed4cd98

修改 Page指令中的 Inherits 属性为你的代码中的 命名空间.类名,我的是 ExtCopyUitl.CopyUtil

<%@ Page Language="C#" Inherits="ExtCopyUitl.CopyUtil" MasterPageFile="~/_layouts/application.master"  %>

然后刷新页面再点击链接,是不是不需要登录了列?

posted @ 2011-06-14 16:07  kech  阅读(495)  评论(0编辑  收藏  举报