Я очень новичок в SharePoint (я использую SharePoint 2013), и у меня возникла странная проблема. Это очень странно, потому что в другом разделе моего приложения оно работает нормально (на другом дочернем сайте).
Так что в основном в SharePoint у меня есть список SharePoint с именем Protocollo .
Мой код содержит следующие строки, которые добавляют документ (файл) в подпапку предыдущего списка SharePoint:
internal static int InsertItem(Dictionary<string, object> prot, Documento doc, bool assignVisibility, bool newItem)
{
int state = 0;
SPListItem item = null;
UOR currUOR = null;
List<UOR> path = new List<UOR>();
SPWeb web = SPContext.Current.Web;
string siglaAOO = web.Properties["sigla_aoo"];
DBConnection dbConfig = ArxeiaProtocollo.Util.ProtUtils.InitializeDBConnection();
dbConfig.Database = siglaAOO;
string username = web.CurrentUser.LoginName;
try
{
SPList list = web.Lists["Protocollo"];
web.AllowUnsafeUpdates = true;
SPFolderCollection folders = list.RootFolder.SubFolders;
SPFolder annoFolder;
DateTime dateProt = Convert.ToDateTime(prot["Data protocollo"]);
try
{
annoFolder = folders[dateProt.Year.ToString()];
}
catch
{
annoFolder = folders.Add(dateProt.Year.ToString());
}
SPFolder meseFolder;
try
{
meseFolder = annoFolder.SubFolders[dateProt.Month.ToString("D2")];
}
catch
{
meseFolder = annoFolder.SubFolders.Add(dateProt.Month.ToString("D2"));
}
SPFolder dayFolder;
try
{
dayFolder = meseFolder.SubFolders[dateProt.Day.ToString("D2")];
}
catch
{
dayFolder = meseFolder.SubFolders.Add(dateProt.Day.ToString("D2"));
}
SPFile spFile = dayFolder.Files.Add(doc.Nome, doc.File, true);
............................................................
............................................................
............................................................
}
Как видно из предыдущего кода, получите список Protocollo с текущего веб-сайта, позволяющий обновлять его:
SPList list = web.Lists["Protocollo"];
web.AllowUnsafeUpdates = true;
Затем в этом списке создается (не существует) структура иерархических папок для года (annoFolder), месяца (meseFolder) и дня ( dayFolder ).
Работает нормально, я пытался удалить структуру папок с моего сайта SharePoint, и, выполнив этот метод, он снова создается, но вот что я получил:
Как видите, эта структура папок корректно создается в моем списке SharePoint (с именем Protocollo ) на текущем веб-сайте.
Хорошо, в конце концов мой код пытается вставить документ в последнюю подпапку ( dayfolder ):
SPFile spFile = dayFolder.Files.Add(doc.Nome, doc.File, true);
Я перехожу к методу Add (): имя файла, байтовый массив, представляющий файл, и истинное логическое значение.
The problem is that performing this line I obtain the following exception that is not providing information:
{Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack.}
Затем в моем интерфейсе появляется всплывающее окно «Отказано в доступе».
Странно то, что другие сайты в моем SharePoint, использующие тот же код, не имеют проблем. Другая странная вещь заключается в том, что загрузка файла вручную в это место списка работает нормально, поэтому я думаю, что это не должно быть проблемой с правами пользователя.
Есть идеи? Что я могу попытаться сделать, чтобы решить эту странную проблему?