条件付きでSharepointリストを作成するための次のようなコードがあります(一種のアップサート):
private void ConditionallyCreateList()
{
SPWeb site = SPContext.Current.Web;
// Check to see if list already exists; if so, exit
if (site.Lists.TryGetList(listTitle) != null) return;
SPListCollection lists = site.Lists;
SPListTemplateType listTemplateType = new SPListTemplateType();
listTemplateType = SPListTemplateType.GenericList;
string listDescription = "This list retains vals inputted for the Post Travel form";
Guid ListId = lists.Add(listTitle, listDescription, listTemplateType);
. . .
これは、アプリの最初の作成時とその後の実行時に機能しました。
ただし、リスト構造に根本的なリファクタリングを行い、古いリストを削除したので、新しい構造の新しいリストが作成されることを願っていました。ただし、リファクタリングされたリストを取得する代わりに、上記の最後の行でこれを取得しました。
Microsoft.SharePoint.SPException was unhandled by user code
Message=Updates are currently disallowed on GET requests. To allow updates on a GET, set the 'AllowUnsafeUpdates' property on SPWeb.
示されたコードを追加することで、これを解決できました。
site.AllowUnsafeUpdates = true;
...しかし、なぜこれが必要なのでしょうか? もう存在しないはずのリスト (Sharepoint の「すべてのサイト コンテンツ」バザーから削除した) の作成に問題があるのはなぜですか (潜在的に「安全でない更新」)?