Question 32
You create a custom Web Part.
You need to ensure that a custom property is visible in Edit mode.
Which attribute should you set in the Web Part?
A. Personalizable
B. WebBrowsable
C. WebCategoryName
D. WebDisplayName
解析:
本题是要实现把Webpart的某个属性开放出来以供用户设置。知识点就是Webpart的编程。
从 Microsoft ASP.NET Web 部件类派生创建Web Part,这是 SharePoint Foundation 建议的做法。在添加新 Web 部件后,可添加针对 Web 部件进行个性化设置的属性。此 Web 部件属性决定了 Web 部件内呈现的文本。它基于单个用户进行个性化设置。
对于基于 ASP.NET Web 部件页基类的 Web 部件,对用于可自定义属性的标记的命名方式与基于 WebPart 基类的 Web 部件不同。以下列表对其中的每一个属性进行了说明:
•WebBrowsable 属性可确保自定义属性在 SharePoint Foundation 的编辑工具窗格中呈现。它仅允最终用户修改由此定义的相关Webpart属性,It only allows the end user to modify the property and does nothing about persistence.
•WebDescription 属性可显示一个用于在用户编辑自定义属性时为其提供帮助的工具提示。
•WebDisplayName 属性可显示自定义属性的显示名称。
•Personalizable 属性可确定对自定义属性所做的更改会影响所有用户还是单个用户。它适用于需要保存个性化设置信息的公共控件属性。ASP.NET 自动生成代码保存或从基础数据检索这些值将存储该控件当在 Web 部件页的 Web 部件区域。
必须满足以下要求为可个性化将标记的属性:
a属性必须是公共的,且必须具有公共 get 和 set 访问器。
b属性必须是读/写属性。
c属性必须是,不带参数。
d无法进行索引属性。
代码自动生成加载和保存个性化设置数据将属性。支持个性化设置的属性 (propery) 此属性是否存在是定位在属性和方法的条件的属性符合列表的约束上面。
注意[WebBrowsable]与[Personalizable]的区别:
如果使用[WebBrowsable]限定属性而不是[Personalizable] 限定属性,则最终用户可以在用户界面上修改它,但设置的新值却不能Persisted(即此处的设置不会影响其它用户)。
反之,如果你使用[Personalizable]限定属性而不是[WebBrowsable] 限定属性,它的值会Persisted(即此处的设置会影响其它用户),但却不允许最终用户修改这个属性。
从上面的区别可以直接排除选项A Personalizable了。
选项C. WebCategoryName: 提供WebPart属性的自定义类别的显示名称
选项D. WebDisplayName,提供Webpart某个属性的显示名称。
所以本题目正确选项应该是B
参考:
http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.webparts.personalizableattribute.aspx
http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.webparts.webbrowsableattribute.aspx
http://msdn.microsoft.com/zh-cn/library/gg491702(v=office.14).aspx
Question 33
You have a Web Part named WebPart1. WebPart1 runs on a Microsoft Office SharePoint Server 2007 server.
You need to ensure that WebPart1 can run as a sandboxed solution in SharePoint Server 2010.
What should you do?
A. Create a new Web Part by using the code from WebPart1.
B. Create a new Visual Web Part by using the code from WebPart1.
C. Create an ASCX file for WebPart1, and then copy the file to the ISAPI folder.
D. Create an ASCX file for WebPart1, and then copy the file to the CONTROLSTEMPLATES folder.
解析:
本题的意图是把一个在Sharepoint2007中创建的Webpart移植到Sharepoint2010中,并要求它支持Sandbox Solution。
相关的知识点如下:
1.Sharepoint2007只支持Farm Solution.
2.Sandbox Solution不支持Visual Web Part.(当然,这是Sharepoint2010最早的情况,现在有一个叫Visual Studio 2010 SharePoint Power Tools 的工具,安装后就可以在Sandbox Solution中开发Visual Web Part组件了)
3. Sharepoint2010中的Visual Web Part实质就是在WebPart部件中引用了ASCX用户自定义控件。
至此选项A最符合本题的要求。
选项B.严格来说不应该算错,但考虑到SandBox Solution早期的情况和相对选项A而言没有那个必要还去开发一个Visual Web Part,因些也可以排除。
选项D.C所作的操作根本就不是在开发WebPart部件,所以直接就可以排除了。
所以本题目正确选项应该是A
Question 34
You create a Visual Web Part in SharePoint Server 2010.
You need to ensure that the Web Part can access the local file system on the SharePoint server. You must minimize the amount of privileges assigned to the Web Part.
What should you do?
A. Elevate the trust level to Full.
B. Elevate the trust level to WSS_Medium.
C. Create a custom code access security (CAS) policy.
D. Deploy the Web Part to the Global Assembly Cache (GAC).
解析:
本题想要实现的是在一个Visual Web Part中对本地文件系统进行有限制的操作。
Microsoft SharePoint Foundation 中的 Web Part部件为用户提供了一种与其他系统进行交互的强大方式。SharePoint Foundation 具有内置的安全设置,可限制 Web 部件对基础系统进行的访问。开发人员可以创建自定义安全策略文件来授予 Web 部件对基础系统的更高访问权限。
代码访问安全性 (CAS) 是一种资源约束策略,用于限制程序集对受保护的系统资源和操作进行的访问。SharePoint Foundation 具有一些内置安全策略,这些安全策略是基于 ASP.NET 的内置安全策略构建的。默认情况下,SharePoint Foundation 使用一组最少的权限来确保服务器和基础结构不受恶意代码的影响。
如果 Web 部件需要比最低设置中提供的权限更高的访问权限,可以使用多种方式提高 Web 部件的权限,但只推荐使用其中一种方法。您可以为 Web 部件创建自定义 CAS 策略,或在 web.config 文件中增加服务器场的整体信任级别。这种方法存在安全风险,不推荐使用。
默认情况下,SharePoint Foundation 为部分信任的应用程序。SharePoint Foundation 可以使用 ASP.NET 内置信任级别,但也会定义自己的信任级别:
•WSS_UserCode:属于沙盒解决方案的信任级别
•WSS_Minimal: 默认情况下,SharePoint Foundation 将 WSS_Minimal 信任级别应用于虚拟服务器。此信任级别授予 ASP.NET Minimal 信任以及 Web 部件连接中的所有权限。WSS_Minimal 策略限制 Web 部件访问许多资源来执行高级操作,其中包括对象模型和文件操作。
•WSS_Medium: 信任级别授予对环境的更高访问权。此外,WSS_Medium 还允许访问 SharePoint Foundation 对象模型和文件操作,包括读取、写入、追加和路径发现。此信任级别还允许访问环境变量。读到这里你可能会觉得本题的答案就是它了,但是这种设置虽然简单,它却存在着一个很大的缺点,即:它将授予您可能不需要的任意新权限。所以此方式的安全性没有创建信任策略文件的安全性高。
上述信任级别对 ASP.NET 信任级别进行了扩展,以便与 SharePoint Foundation 结合使用。信任级别是在每台 Web 服务器的文件系统上的策略文件中定义的。具体操作是: 在 Web 应用程序根目录中的 web.config 文件中,有一个名为 <trust> 的标记,其默认属性为 level="WSS_Minimal"。可以将此级别更改为 WSS_Medium或改回来。
下面分别对各选项进行分析:
选项A. Elevate the trust level to Full. 把代码的信任权限提高到Full,这显然是在背道而驰。
选项B. Elevate the trust level to WSS_Medium.,如上描述,它达不到本题的” minimize the amount of privileges”的要求,因为它可能会开放一些你并不需要的权限。
选项C. Create a custom code access security (CAS) policy.这就是本题的答案。(微软建议)创建一个信任策略文件并将 Web.config 文件指向这个新文件。虽然这种方式更为复杂,但它使您能够设置 Web 部件的精确权限。
选项D. Deploy the Web Part to the Global Assembly Cache (GAC).
在 SharePoint 网站内,可以将 Web 部件程序集部署到以下两个主要位置。
bin 目录 — bin 目录是一个存储在 Web 应用程序根目录下的文件夹。在 Internet Information Services (IIS) 中创建网站时将确定此文件夹的位置。在 Windows SharePoint Services 中,可以通过 SharePoint 3.0 管理中心网站或通过在 IIS 管理器中手动创建新的网站来实现此目的。
全局程序集缓存 — 可用于部署已签名程序集的全局位置。利用全局程序集缓存,可以跨多个应用程序共享程序集。全局程序集缓存将随 .NET 运行库一起自动安装。通常,组件将存储在 C:\WINNT\Assembly 中。
选项D就是采用的GAC布置方式,以这种方式安装到全局程序集缓存的代码通常没有 CAS 限制,因此失去了深度保护安全的优势。
题外话: 最新的Sharepoint2013由于是基于.NET Framework4的,由于.NET Framework 4 版已经弃用代码访问安全性 (CAS) 的策略部分。因此,如果显式或隐式(通过其他类型和成员)调用过时的策略类型和成员,则可能遇到编译警告和运行时异常。所以,在SharePoint 2010 的服务器场解决方案中的程序集可用自定义访问安全 (CAS) 策略部署。但到了SharePoint 2013 中将忽略此类策略;SharePoint 2013 的服务器场解决方案中的所有程序集都以完全受信任状态运行。
所以本题目正确选项应该是C
参考:
http://msdn.microsoft.com/zh-cn/library/cc768613(v=office.14).aspx
http://msdn.microsoft.com/zh-cn/library/cc768621(v=office.12).aspx
http://technet.microsoft.com/zh-cn/library/cc288040(v=office.14).aspx