В настоящее время обновления GET-запросов запрещены. Чтобы разрешить обновления для GET, установите свойство «AllowUnsafeUpdates» на SPWeb. - PullRequest
3 голосов
/ 23 апреля 2010

У меня есть скрытая веб-часть, которая читает значение строки запроса "optout = Yes".Это optout = Да, тогда мне нужно обновить свойство профиля.Если вы видите в моем коде.Ошибка " userprof.Commit () " и выдается ". Обновления в настоящее время запрещены для запросов GET. Чтобы разрешить обновления для GET, установите свойство" AllowUnsafeUpdates "в SPWeb ",Любое решение для этого?

private void OptOutMemberInvitation()
{

  SPSecurity.RunWithElevatedPrivileges(delegate()
  {

    //update the invitee's Profile property
    UpdateInviteeOptOutProfile(InviteeConstitID);

  });
}
private void UpdateInviteeOptOutProfile(string inviteeSiteColUrl)
{
  ServerContext sc = ServerContext.Current;
  UserProfileManager upm = new UserProfileManager(sc);
  //Get the user profile
  Microsoft.Office.Server.UserProfiles.UserProfile userprof = upm.GetUserProfile(MemberConstitID);
  SPWeb web = userprof.PersonalSite.RootWeb;

  //make sure we can update our list
  web.AllowUnsafeUpdates = true;
  web.Update();
  //Update the OptOut Property on the user's profile.
  userprof["OptOut"].Value = "Yes";
  userprof.Commit(); //Fails here
  //update the list item to persist it to list

  web.AllowUnsafeUpdates = false;
  //siteCol.Close();
  //siteCol.Dispose();
}

Ответы [ 2 ]

1 голос
/ 14 января 2014

Мы использовали «SPSecurity.RunWithElevatedPrivileges», что означает, что мы хотели бы использовать контекст учетной записи пула приложений для этого процесса обновления. Но внутри функции «UpdateInviteeOptOutProfile» мы использовали текущий контекст вместо создания нового сайта> веб-объекта.

Пожалуйста, создайте новый сайт, а затем веб-объект, используя URL или ID.

0 голосов
/ 23 апреля 2010

Похоже, вы могли бы использовать два объекта SPWeb и установить AllowUnsafeUpdates на неправильный объект.Один будет связан с текущим контекстом сервера, а другой - userprof.PersonalSite.RootWeb.Вы будете устанавливать AllowUnsafeProperties на RootWeb и обновлять SPWeb в профиле (если он есть).

Кстати, не забудьте сделать web.Update () после того, как вы установите AllowUnsafeProperties в конце.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...