Встречайте с ошибкой - "Обновления в настоящее время запрещены для запросов GET" - PullRequest
0 голосов
/ 23 февраля 2010

Я использую SharePoint Server 2007 Enterprise с Windows Server 2008 Enterprise. Я развернул издательский портал. Я разрабатываю веб-приложение ASP.Net с использованием VSTS 2008 + C # + .Net 3.5 + ASP.Net + SharePoint Server 2007 SDK.

Вот мои фрагменты кода, и я получил ошибку - "Обновления в настоящее время запрещены для запросов GET". Есть идеи как починить?

Microsoft.SharePoint.SPException: Updates are currently disallowed on GET requests. To allow updates on a GET, set the 'AllowUnsafeUpdates' property on SPWeb.

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                SPWebApplication webApp = SPContext.Current.Site.WebApplication;
                SPSiteCollection siteCollections = webApp.Sites;
                foreach (SPSite item in siteCollections)
                {
                    SPWeb webItem = item.OpenWeb();
                    webItem.AllowUnsafeUpdates = true;
                }

                SPSite newSiteCollection = siteCollections.Add("sites/myblog",
                    "New Sample Site", "New Sample Site Description", 1033, "BLOG#0",
                    "foo\\foouser", "Owner name", "owneremail@foo.com");
            }
            catch (Exception ex)
            {
                Response.Write(ex.ToString() + "\t" + ex.StackTrace);
            }
        }

Ответы [ 2 ]

1 голос
/ 24 февраля 2010

Проблема, по которой вам не разрешено чтение / запись в базу данных по запросу GET, заключается в том, что ваш код будет доступен для использования через межсайтовый скриптинг. Читайте о последствиях AllowUnsafeUpdates здесь .

В любом случае, если хотите, вы можете установить для этого SPWeb.AllowUnsafeUpdates значение true, но используйте его так:

try {
  web.AllowUnsafeUpdates = true;
  ...
}
finally {
  web.AllowUnsafeUpdates = false;
}
1 голос
/ 23 февраля 2010

Добавьте проверку, чтобы убедиться, что вы получаете POST вместо GET, прежде чем пытаться разрешить обновления. Убедитесь, что все, что вносит изменение, делает это с помощью запроса POST, а не с помощью параметров URL и GET.

if (IsPostBack)
{
   ...
}
...