从Sharepoint List获取项目

时间:2011-10-17 11:07:43

标签: sharepoint-2010

我正在尝试从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内部服务器错误。如果我喜欢它,它可以工作,但我想删除那部分。

有人能告诉我什么是错的吗?我真的不明白...... 谢谢。

编辑:如果我删除所有文件.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的调用的超时值或增加Binding上的SendTimeout值。分配给此操作的时间可能是较长超时的一部分。 System.TimeoutException:对“http:// localhost:32843 / SecurityTokenServiceApplication / securitytoken.svc”的HTTP请求已超过分配的超时00:01:00。分配给此操作的时间可能是较长超时的一部分。 ---> System.Net.WebException:操作已超时    在System.Net.HttpWebRequest.GetResponse()    at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)    ---内部异常堆栈跟踪结束---    在System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException,HttpWebRequest request,HttpAbortReason abortReason)    at 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为空...不明白为什么。 然后在我创建的日志文件中,我看到: 对象引用未设置为对象的实例。

0 个答案:

没有答案