WSSサイト上にテンプレートをベースにリストを一気に追加するプログラムです。
半日ほどはまりました。一応動作するようにはなりましたが、ピンとこなくて調査中です。
SPSite site = new SPSite("http://localhost");
SPWeb web1 = site.OpenWeb();
SPListTemplate template = site.GetCustomListTemplates(web1)["TemplateList"];
for (int i = 1; i <= 10; i++)
{
try
{
string name = "A" + i.ToString("00");
// ↓の2行は正常に動作(①)
SPWeb web2 = site.OpenWeb();
web2.Lists.Add(name, "", template);
// ↑の2行を↓に置き換えると、ループ処理の2回目で例外がスローされる(②)
//web1.Lists.Add(name, "", template);
}
catch (Exception ex1)
{
}
}
どうやら同じサイトにリストをガンガン追加する場合も、
ループの毎に SPWeb オブジェクトを作ってやる必要があるみたいです。
DB処理が関係してる気がしてるんですけど...誰が理由を知りませんか?
しかし、久しぶりに試行錯誤しながらプログラムを書いたな~(^^