Я пытаюсь получить элементы из списка в sharepoint, но у меня есть некоторые проблемы, это трудно объяснить, поэтому посмотрите на код:
try
{
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\log\Steps_" + DateTime.Now.Day + "_at_" + DateTime.Now.Hour + "h" + DateTime.Now.Minute + ".txt", true))
{
if (SPSite.Exists(new Uri(Url)))
{
using (SPSite site = new SPSite(Url))
{
file.WriteLine("step 1 : " + DateTime.Now.Hour + "h" + DateTime.Now.Minute + " " + DateTime.Now.Second + "s " + DateTime.Now.Millisecond + "ms ");
SPList list = site.AllWebs[""].Lists["CrmInfo"];
file.WriteLine("step 2 : " + DateTime.Now.Hour + "h" + DateTime.Now.Minute + " " + DateTime.Now.Second + "s " + DateTime.Now.Millisecond + "ms ");
var items = list.GetItems();
file.WriteLine("step 3 : " + DateTime.Now.Hour + "h" + DateTime.Now.Minute + " " + DateTime.Now.Second + "s " + DateTime.Now.Millisecond + "ms ");
foreach (SPListItem item in list.Items)
{
if (item.Name.Equals("serverName"))
serverName = (string)item["Value"];
if (item.Name.Equals("orgName"))
orgName = (string)item["Value"];
if (item.Name.Equals("userName"))
userName = (string)item["Value"];
if (item.Name.Equals("userPassword"))
userPassword = (string)item["Value"];
if (item.Name.Equals("userDomain"))
userDomain = (string)item["Value"]; }
}
}
}
}
catch (Exception e)
{
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\log\error_" + DateTime.Now.Day + "_at_" + DateTime.Now.Hour + "h" + DateTime.Now.Minute + ".txt", true))
{
file.WriteLine("An error occured on {0}th at {1}h{2}", DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute);
file.WriteLine(e.Message);
}
}
Вот проблема: если я удаляю
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\log\Steps_" + DateTime.Now.Day + "_at_" + DateTime.Now.Hour + "h" + DateTime.Now.Minute + ".txt", true))
(со всеми соответствующими file.WriteLine ...), и я развернул свою функцию на sharepoint, я получил 500 внутреннюю ошибку сервера. Если я позволю этому так, это работает, но я хочу удалить эту часть.
Может кто-нибудь сказать мне, что не так? Я действительно не понимаю ...
Спасибо.
edit: если я удаляю все file.WriteLine ... при развертывании, он создает файл Steps_xxxx.txt, который является пустым (логика), но ловит исключение:
The process cannot access the file 'C:\log\Steps_17_at_12h22.txt' because it is being used by another process.
Но я нигде больше этим не пользуюсь!
Редактировать: Новый элемент, я получаю это в моем лог-файле
Ошибка произошла 20-го числа в 11 ч. 3 м.
Время ожидания канала запроса при ожидании ответа после 00: 00: 43.5159686. Увеличьте значение тайм-аута, переданное вызову Request, или увеличьте значение SendTimeout в Binding. Время, отведенное для этой операции, могло быть частью более длительного времени ожидания.
System.TimeoutException: HTTP-запрос к 'http://localhost:32843/SecurityTokenServiceApplication/securitytoken.svc' превысил установленное время ожидания 00:01:00. Время, отведенное для этой операции, могло быть частью более длительного времени ожидания. ---> System.Net.WebException: срок действия операции истек
в System.Net.HttpWebRequest.GetResponse ()
в System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply (TimeSpan timeout)
--- Конец внутренней трассировки стека исключений ---
в System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException (WebException webException, запрос HttpWebRequest, HttpAbortReason abortReason)
в System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply (TimeSpan timeout)
в System.ServiceModel.Channels.RequestChannel.Request (сообщение-сообщение, время ожидания TimeSpan)
mscorlib
Я немного искал изменение времени ожидания client.config (с 00:00:20 до 00:02:00), но все еще не работает ...
На самом деле существует один вопрос для решения этой проблемы:
Почему я не могу использовать SPSite
в своей функции?
Я нашел способ отладки кода при запуске сайта sharepoint (используя Debug-> Attach to process ...), и я попытался с этим:
if (SPContext.Current.Site.RootWeb.Site!=null)
{
using (SPSite site = SPContext.Current.Site.RootWeb.Site)
{
Моя точка останова находится на этой первой строке, а SPContext.Current.Site.RootWeb.Site
пусто ... Не понимаю, почему.
затем в файле журнала, который я создал, я вижу это:
Ссылка на объект не установлена для экземпляра объекта.