Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EPiServer社区成员化身错误_C#_Episerver 7_Episerver Relate+ - Fatal编程技术网

C# EPiServer社区成员化身错误

C# EPiServer社区成员化身错误,c#,episerver-7,episerver-relate+,C#,Episerver 7,Episerver Relate+,我正在与社区一起开发EPiServer CMS 7 MVC站点。我正在尝试获取并显示成员头像(头像实际存在于“已贡献文件”文件夹中)。这是我的密码: var user = CurrentUser; var image = user.GetPortraitUri(ImageSize.Huge).ToString(); 变量图像获取值: http://localhost:18000/EPiServerCommunity/Modules/ImageGa

我正在与社区一起开发EPiServer CMS 7 MVC站点。我正在尝试获取并显示成员头像(头像实际存在于“已贡献文件”文件夹中)。这是我的密码:

        var user = CurrentUser;
        var image = user.GetPortraitUri(ImageSize.Huge).ToString();
变量图像获取值:

        http://localhost:18000/EPiServerCommunity/Modules/ImageGallery/ImageHandler.ashx?imageId=7&thumbnailId=10
但在视图中,我只看到图像图标(比如当无法上传或显示图像时)。当我试图在新选项卡中打开此图像链接时,它会将我重定向到EPiServer登录页面。我不明白为什么它重定向到登录页面,如果用户是授权我。有什么想法吗

其他信息: 我使用部署中心安装了episerverrelate站点。在EditProfile用户控件或MyPage上获取用户头像的方法相同。当我尝试使用gettedurl在新选项卡中打开图像时,我看到了它。我想Web.config文件中可能有一些权限,但我不知道

添加新信息(2014年10月11日)。问题在第二节 我的意思是在社区部分。当我在以前安装的episerverrelate站点中更改为deny时,当我试图打开图像时,我得到的是登录页面。在我的web.config文件中,我将“所有拒绝”更改为“允许”,但当我试图通过url打开图像时,仍然会看到登录页面。我猜Episerver在web.config文件中没有看到这个部分

添加新信息(2014年11月11日)。我在这一节的结尾又增加了一个角色“每个人”。我看到,当我试图打开localhost:18000\epserver时,它会跳过登录页面。我在EpiServerCommunity部分添加了相同的角色“Everyone”。现在看来:

<location path="EPiServerCommunity">
<system.web>
  <pages enableViewState="true" />
  <authorization>
    <allow roles="CommunityAdmins,CommunityModerators,Administrators,Everyone" />
    <allow users="*" />
  </authorization>
</system.web>


,但我希望我能更快地得到答案

解决了我的问题。EPiServer跳过位置部分中的权限。我用事件
DefaultSecurity\u CreatedUser
MyPageHandler\u Register创建了class
CommunitySecurityModule
,在这里我设置了ImageGallery的所有者以及新闻提要等的其他访问权限。现在,我已经注册了用户并将其添加到系统中

        newUser = CommunitySystem.CurrentContext.DefaultSecurity.AddUser(newUser);
它调用
MyPageHandler\u寄存器
并设置所有权限:

        var user = e.Object as IUser;
        if (user != null)
        {
            var myPage = MyPageHandler.Instance.GetMyPage(user);
            if (myPage != null && myPage.ImageGallery != null)
            {
                foreach (var imageGallery in myPage.ImageGallery.Children)
                {
                    var imageGalleryClone = imageGallery.CreateWritableClone() as ImageGallery;
                    imageGalleryClone.SetOwner(user);
                    ImageGalleryHandler.Instance.UpdateImageGallery(imageGalleryClone);
                }
            }
        }
以下
SetOwner
方法的实现:

    public static void SetOwner(this ImageGallery imageGallery, IUser owner)
    {
        imageGallery.SetAttributeValue("Owner", owner);
    }
实现
DefaultSecurity\u CreatedUser

    private void DefaultSecurity_CreatedUser(ISecurityHandler sender, ICreateUserEventArgs args)
    {
        // Add user to the community members group
        var group = CommunityMembersGroup;
        var addedUser = args.User;
        addedUser = (IUser)addedUser.CreateWritableClone();
        addedUser.Groups.Add(group);

        // Update the user
        CommunitySystem.CurrentContext.DefaultSecurity.UpdateUser(addedUser);

        // Set access rights to the newly created user
        // Access right for anonymous users
        var anonAccessRights = new ReadModifyRemoveAccessRights
        {
            Read = true,
        };
        EntitySecurityHandler.Instance.SetAccessRights(addedUser, AnonymousGroup, anonAccessRights);

        // Access right for community members
        var communityMembersAccessRights = new ReadModifyRemoveAccessRights
        {
            Read = true,
        };
        EntitySecurityHandler.Instance.SetAccessRights(addedUser, group, communityMembersAccessRights);

        // Access rights for administrators
        var adminAccessRights = new ReadModifyRemoveAccessRights
        {
            Read = true,
            Modify = true,
            Remove = true
        };
        EntitySecurityHandler.Instance.SetAccessRights(addedUser, AdministratorsGroup, adminAccessRights);

        // Access rights for the added user
        var userAccessRights = new ReadModifyRemoveAccessRights
        {
            Read = true,
            Modify = true,
            Remove = true
        };
        EntitySecurityHandler.Instance.SetAccessRights(addedUser, addedUser, userAccessRights);

        // Access rights for moderator
        var moderatorAccessRights = new ReadModifyRemoveAccessRights
        {
            Read = true,
            Modify = true,
            Remove = true
        };
        EntitySecurityHandler.Instance.SetAccessRights(addedUser, ModeratorsGroup, moderatorAccessRights);
    }
注意:在此之前,您应该在管理面板中为类型
ImageGallery
创建类型为
IUser
的属性“Owner”