gpt4 book ai didi

sharepoint - 使用 UserProperty 的二进制类型

转载 作者:行者123 更新时间:2023-12-05 00:01:20 25 4
gpt4 key购买 nike

出于某种原因,我需要将一些大字符串保存到用户配置文件中。因为字符串类型的属性限制为 400 个字符,所以我决定尝试使用允许长度为 7500 的二进制类型 (PropertyDataType.Binary)。我的想法是将我拥有的字符串转换为二进制并保存到属性。

我使用以下代码创建属性:

            context = ServerContext.GetContext(elevatedSite);
profileManager = new UserProfileManager(context);
profile = profileManager.GetUserProfile(userLoginName);
Property newProperty = profileManager.Properties.Create(false);
newProperty.Name = "aaa";
newProperty.DisplayName = "aaa";

newProperty.Type = PropertyDataType.Binary;
newProperty.Length = 7500;

newProperty.PrivacyPolicy = PrivacyPolicy.OptIn;
newProperty.DefaultPrivacy = Privacy.Organization;
profileManager.Properties.Add(newProperty);
myProperty = profile["aaa"];
profile.Commit();

问题是,当我尝试向属性提供 byte[] 类型的值时,我收到错误消息“无法将‘System.Byte’类型的对象转换为‘System.String’类型。”。如果我尝试提供字符串值,我会收到“无效的二进制值:输入必须匹配二进制字节 [] 数据类型。”那么我的问题是如何使用这种二进制类型?

我的代码:

SPUser user = elevatedWeb.CurrentUser;ServerContext 上下文 = ServerContext.GetContext(HttpContext.Current);UserProfileManager profileManager = new UserProfileManager(context);UserProfile profile = GetUserProfile(elevatedSite, currentUserLoginName);UserProfileValueCollection myProperty= profile[PropertyName];

myProperty.Value = StringToBinary(GenerateBigString());

和测试函数:

    private static string GenerateBigString()
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 750; i++) sb.Append("0123456789");
return sb.ToString();
}

private static byte[] StringToBinary(string theSource)
{
byte[] thebytes = new byte[7500];
thebytes = System.Text.Encoding.ASCII.GetBytes(theSource);
return thebytes;
}

最佳答案

您是否尝试过使用较小的字符串?在第一次测试中达到最大值可能会隐藏其他行为。当您在调试器中检查生成的字符串时,它是否符合要求? (7500 字节[])

关于sharepoint - 使用 UserProperty 的二进制类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2109429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com