sharepoint client 端检验List是否已经存在的方法。

感悟随笔 专栏收录该内容
4 篇文章 0 订阅

sharepoint client 端检验List是否已经存在。

在SPLIst端,有个

<span style="font-family:Arial;font-size:18px;">Web.Lists.trygetList("ListName")</span>
可以来检验sharepoint端中是否存在名为listname的List。

那么client端呢?我用List.title==null的方法来检验,只是报了个未初始化的错误,开来该方法不可行。后来经过查询,发现如下方法可行:

<span style="font-family:Arial;font-size:18px;">internal static Boolean haveList(String listname) {
            using (ClientContext ctx = new ClientContext(defaultSiteUrl))
            {
                ListCollection listCollection = ctx.Web.Lists;
                ctx.Load(listCollection, lists => lists.Include(list => list.Title).Where(list => list.Title == listname));
                ctx.ExecuteQuery();
                if (listCollection.Count > 0)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }</span>
其实很简单,只是linq语句用的不熟练而不得其法。

改段时间有空要好好学习下linq语句了~



另:早上的时候有抛一个异常,结果解决方法却异常简单,特记录如下,希望帮到有缘人~

此异常出现于为Feature添加了eventReceiver之后Vs端自动激活feature时候报错。

异常信息:

Error occurred in deployment step 'Activate Features': Failed to load receiver assembly "ProjectName, Version=1.0.0.0,Culture=neutral,PublicKeyToken=0388dfd3622ea424" for feature "FeatureName" (ID: 8e5c1dd8-c618-438f-a01c-f9cf9d336d6f).: System.IO.FileNotFoundException: Could not load file or assembly 'FHSystem, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0388dfd3622ea424' or one of its dependencies. The system cannot find the file specified.
File name: 'ProjectName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0388dfd3622ea424'
   at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection)
   at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
   at System.Reflection.Assembly.Load(String assemblyString)
   at Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()



解决方法:

1.c:windows\assembly下面看一下是不是引用的相关dll没加进去。

2. Feature1.Template.xml这个文件下的内容是不是填写对了。主要是看一下publickeytoken是不是写对了。

下面的写法是我的一个示范写法,自己记得把projectname,namespace.classname 之类的按照字面意思自己替换。

<span style="font-family:Arial;font-size:18px;"><Feature AlwaysForceInstall="TRUE" xmlns="http://schemas.microsoft.com/sharepoint/" ReceiverAssembly="ProjectName, Version=1.0.0.0,Culture=neutral,PublicKeyToken=0388dfd3622ea424" ReceiverClass="NameSpace.ClassName">
</Feature></span>
3.当然还有其他错误的可能。但如果以上的你都检查了,那么此时你可以试试大招了:
<span style="font-family:Arial;font-size:18px;">1.删除已经创建的evevntReceiver
2.clean一下工程。
3.关闭VS。
4.删除sharepoint工程目录下的obj,bin文件
5.想重启电脑也可以重启下
6.打开vs
7.重新添加evevtreceiver
8.先别忙着加代码,试试看行不行
9.部署前把“部署后自动激活feature”的属性设置为none,即手动去打开这个feature。
10.到此步大部分情况下问题得解。还不行那就不知道了</span>


  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值