您的位置:首页 > 其它

Sharepoint习题——Webpart

2014-09-12 09:45 459 查看
Question28
You have a Microsoft Office SharePoint Server 2007 site.
You upgrade the site to SharePoint Server 2010.
You need to create a Feature that prevents site collection administrators from upgrading the user interface of the site to SharePoint Server 2010.
Which property should you use?
A. AdministrationSiteType
B. AllowDesigner
C. AllowMasterPageEditing
D. UIVersionConfigurationEnabled

解析:

 这是一道关于从Sharepoint2007升级到Sharepoint2010后的网站界面控件的题目。

选项A. AdministrationSiteType:表示SharePoint Foundation所支持的administration site的类型,可选值有 0:不是一个Administration Site. 1:是一个Tenant Administration Site。

选项B. AllowDesigner: 指定是否允许用户使用 SharePoint Designer  在 Web 应用程序中编辑网站。默认值为 True。

选项C. AllowMasterPageEditing指定是否允许网站管理员使用 SharePoint Designer 自定义母版页和布局页。默认值为 True。

选项D. UIVersionConfigurationEnabled :

先让让我们大致了解下Sharepoint升级的UI控制问题: 默认情况下,在将 Windows SharePoint Services 3.0 网站或 Office SharePoint Server 2007 网站升级到 SharePoint 2010 时,最初将通过使用 Windows SharePoint Services 3.0 的版本 3 用户界面来呈现其页面。但是,将用户界面迁移到版本 4 的时间将由网站管理员通过使用浏览器中的标准命令逐个网站进行确定。浏览器中还有一个可用命令,可供网站集所有者用来一次性迁移网站集中的所有网站。

下面我们将讨论实现详细信息,利用这些信息,SharePoint 2010 可在各版本之间来回切换网站的用户界面。每个 SharePoint 网站均由一个 SPWeb 对象表示。从 SharePoint 2010 开始,每个 SPWeb 对象都带有一个在内容数据库中跟踪的新 UIVersion 属性。UIVersion 属性是基于整数的,它可包含的有效值为 3 或 4。当某个网站的 UIVersion 属性值为 3 时,SharePoint 2010 将使用版本 3 来呈现该网站的页面。当某个网站的 UIVersion
属性值为 4 时,SharePoint 2010 将使用版本 4 来呈现该网站的页面。

还可利用 SharePoint 2010 来启用或禁用网站管理员重新配置用户界面版本的能力。可通过另一个新的 SPWeb 属性(即 UIVersionConfigurationEnabled 属性)来进行此控制。如果此属性具有的布尔值为 true,则 SharePoint 2010 将使网站管理员能够使用浏览器在版本之间来回切换。如果某个网站的 UIVersionConfigurationEnabled 属性值为 false,则 SharePoint 2010 不会为网站管理员提供用于在各个用户界面版本之间切换的任何控制。

当您在 SharePoint 2010 中创建新网站时,无需使用直观升级功能。因此,创建的新网站的 UIVersion 属性值为 4,UIVersionConfigurationEnabled 属性值为 false。这意味着,将使用版本 4 来运行新网站的用户界面,并且网站管理员无法将网站的用户界面切回到版本 3。

在从 Windows SharePoint Services 3.0 和 Office SharePoint Server 2007 升级现有网站时,情况则有所不同。当您升级某个网站时,SharePoint 2010 包含以下默认行为:最初分配的 UIVersion 属性值为 3,UIVersionConfigurationEnabled 属性值为 true。这意味着,最初会在版本 3 下运行已升级网站的用户界面。已升级网站还使网站管理员能够重新配置网站的用户界面以开始使用版本 4。但是,当网站管理员决定重新配置在版本
4 下运行的网站时,SharePoint 2010 会将 UIVersionConfigurationEnabled 属性更新为 false,这将使网站管理员无法切回到版本 3。

  所以本题目正确选项应该是D

参考 :
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsite.administrationsitetype(v=office.14).aspx
http://technet.microsoft.com/zh-cn/library/ff607703.aspx
http://msdn.microsoft.com/en-au/library/gg454789(v=office.14).aspx

Question 29
You have a custom Web Part.
You need to create a custom user interface for modifying the Web Part properties.
What should you do?
A. Modify the [ToolBox] attribute of the custom Web Part.
B. Create a new tool part for the custom Web Part.
C. Create a new Web Part. Implement the IControlBuilderAccessor interface.
D. Create a new Master Page. Implement the IControlBuilderAccessor interface.

解析:

   本题想要实现创建一个用户界面来设置Custom Web Part的各个属性,是关于Web Part编程的题目。微软支持开发者通过使用Custom Tool Part创建操作WebPart相关属性的用户界面。你可以轻易找到相关资料来指导你具体如何实现。

选项A. Modify the [ToolBox] attribute of the custom Web Part. 这是修改已有的默认的Webpart控件属性(Default Properties),对新添加的属性则无能为力,对创建或修改管理WebPart属性的界面(例如:在此界面上添加一个Dropdown List以辅助定义相关属性)也毫无关系。

选项C. Create a new Web Part. Implement the IControlBuilderAccessor interface. IControlBuilderAccessor 接口定义的功能是:使控件序列化程序可以到达控件的生成器。IControlBuilderAccessor 接口定义了控件必须实现的属性,以允许控件序列化程序可以访问控件的生成器。从此接口的描述来看,仅实现此接口是不足以完成属性修改界面与Webpart控件完整交互的。虽然Sharepoint的Tool Part的实现用到了此接口,但它并不是本题需要的全部。

选项D. Create a new Master Page. Implement the IControlBuilderAccessor interface.即使对IControlBuilderAccessor 接口不甚了解,看到了Master page的字样也可以判断它与Webpart的属性修改界面定义没什么关系了。

 

所以本题目正确选项应该是B

参考:
http://msdn.microsoft.com/zh-cn/library/vstudio/ee231548(v=vs.100).aspx
http://msdn.microsoft.com/zh-cn/library/dd584178(v=office.11).aspx
http://msdn.microsoft.com/zh-cn/library/fp179922.aspx
http://msdn.microsoft.com/EN-US/library/system.web.ui.icontrolbuilderaccessor
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webpartpages.toolpart_members(v=office.14).aspx

Question 30
You need to create a Web control that displays HTML content during the last stage of the page processing lifecycle.
Which method should you override in the Web control?
A. LoadControlState
B. Render
C. SaveViewState
D. SetDesignModeState

解析:

 本题想要实现在页面处理生命周期的最后阶段呈现一段HTML内容。

 所以,实质是要对Page页面的生命周期进行掌握。

 ASP.NET 页运行时,此页将经历一个生命周期,在生命周期中将执行一系列处理步骤。这些步骤包括初始化、实例化控件、还原和维护状态、运行事件处理程序代码以及进行呈现。了解页生命周期非常重要,因为这样做您就能在生命周期的合适阶段编写代码,以达到预期效果。

选项A. LoadControlState :此方法是内部保留方法,不支持在你的用户代码中直接调用。所以直接排除。

选项B. Render 呈现,处于阶段之前的一个阶段,在呈现之前,会针对该页和所有控件保存视图状态。在呈现阶段中,页会针对每个控件调用 Render 方法,它会提供一个文本编写器,用于将控件的输出写入页的 Response 属性的 OutputStream 对象中。从此描述可以推断,这正是本题需要使用的方法。

选项C. SaveViewState. 只是用于保存Control的ViewState状态。与呈现HTML内容毫无关系。

选项D. SetDesignModeState 此方法保存设计时数据的控件。实践时要求用户必须重写此方法保存您的控件所需的设计时数据。与呈现HTML内容毫无关系。

所以本题目正确选项应该是B

参考:
http://msdn.microsoft.com/zh-cn/library/microsoft.sharepoint.webpartpages.spwebpartmanager.loadcontrolstate(v=office.14).aspx
http://msdn.microsoft.com/zh-cn/library/ms178472.aspx

Question 31
You need to create a Web control that displays an ASCX control.
Which event should you use to render the Web control?
A. CreateChildControls
B. LoadControlState
C. SaveViewState
D. SetDesignModeState

解析:

本题是关于Visual Web Part的编程问题。

先来看看Webpart的生命周期

1. 当一个包含WebPart的WSS站点页面被响应请求或者是它被提交到Server端的时候,这时WebPart生存周期开始了

2.  OnInit 初始化,加载相关配置文件 (如WebPart任务面板上的属性,样式等配置信息) .

3.  LoadViewState 返回先前最后一次被处理的状态 (如webpart是展现,隐藏还是关闭)

4.  CreateChildControls 创建WebPart UI ,通过Controls.Add()方法装载Web 控件 (当Webpart是第一次展现的时候CreateChildControls方法发生在OnLoad方法之前,而经过一次postback之后,它发生在OnLoad方法之后)

5.  OnLoad 从数据库或者其他系统重新获取要展现的数据 (如获取数据库连接)

6.  User-Generated Events 响应用户生成事件 (如Button Click)

7.  RendenContents 生成 html output,实现最终的UI展现 (由HTMLTextWriter class 来实现)

8.  SaveViewState 保存控件状态 (ViewState 被序列化之后保存在一个hidden field 里)

9.  Dispose 从内存中移除对象,释放临界资源 (如释放数据库连接)

10. OnUnLoad 最终完成内存清除工作

再来看看相关事件

OnInit  处理控件的初始化

OnLoad 处理控件的装载

CreateChildControls 创建子控件

EnsureChildControls   确保CreateChildControls方法被调用,使用该方法来确保在访问控件的数据之前控件已经存在。

OnPreRender  处理在呈现控件之前必须完成的任务,例如数据装载。异步页面任务应该从该方法中被启动。

Page.PreRenderComplete 在所有的控件都完成其OnPreRender 方法并且页面已经完成了异步任务的执行之后,将会触发该事件。

Render 呈现整个控件,包括外部标签。

RenderContents  仅仅呈现控件在外部标签和样式属性内的内容。

选项A. CreateChildControls: 创建子控件,正是完成本题要求的选项。

选项B. LoadControlState: 此方法是内部保留方法,不支持在你的用户代码中直接调用。所以直接排除。

选项C. SaveViewState. 只是用于保存Control的ViewState状态。与呈现ASCX control内容毫无关系。

选项D. SetDesignModeState 此方法保存设计时数据的控件。实践时要求用户必须

重写此方法保存您的控件所需的设计时数据。与呈现ASCX control内容毫无关系。

 所以本题目正确选项应该是B

参考:
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.basefieldcontrol.createchildcontrols.aspx

 

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
18410
,提供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

Question 35
You have a custom Web Part that is deployed as a sandboxed solution.
You need to ensure that the Web Part can access the local file system on a 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. Redeploy the Web Part as a farm solution.
D. Deploy the Web Part to the Global Assembly Cache (GAC).

解析:

  本题实质是要实现在SandBox Solution自身的代码中有限访问本地文件系统。

由于SandboxSolution的安全限制,这个要求是不可能实现的,所以唯一的出路就是重新创建这个Solution,把它变成Farm Solution才能解决这个问题。

至于其它的选项A.B.D等,都不是Sandbox Solution关心的问题,也不是解决Sandbox Solution权限限制的方法,所以都可以排除掉。

 所以本题目正确选项应该是C

Question 36
You need to convert a user control named Control.ascx to a SharePoint Web Part. The Web Part must be packaged as a user solution.
What should you do?
A. Modify the SafeControls section of the web.config file.
B. Copy the Control.ascx file to the ControlTemplates folder.
C. Create a new Visual Web Part and use the existing MyControl.ascx file.
D. Create a new Web Part and reuse the code from the MyControl.ascx file.

解析:

 本题实质是要把一个用户自定义控件Contrl.ascx引入到一个WebPart中。

选项A. Modify the SafeControls section of the web.config file. 在Sharepoint 中只有确保受信任的控件才能在系统中使用。SharePoint将只加载在web.config文件中的SafeControl元素定义的控件。本选项与本题要达到的目的无关。

选项B. Copy the Control.ascx file to the ControlTemplates folder. 打开一个使用到UserControl的项目(如下图),可以看到一个UserControl控件是放置在文件夹ControlTemplates下的,但它不仅仅是ascx文件,还有相应的后台代码文件.CS。

 


  通过这种直接拷贝Control.ascx文件的方法是实现不了再利用用户自定义控件的。

选项C. Create a new Visual Web Part and use the existing MyControl.ascx file. 我们知道,Sharepoint2010中有Visual Web Part,当我们在VS2010中创建一个Visual Web Part的项目时,我们可以看到,它实际就是创建了一个用户自定义控件,然后再在Web Part中加载这个用户自定义控件从而实现设计时的可视化操作。因为在创建Viusal Web Part时,VS2010已经自动生成了一个用户自定义控件,所以你不可能还要去利用另一个MyControl.ascx文件。

选项 D. Create a new Web Part and reuse the code from the MyControl.ascx file. 这个选项才是我们想要的,即利用MyControl.ascx的代码来创建我们的Web Part。

 所以本题目正确选项应该是D.

参考:
http://blogs.msdn.com/b/kaevans/archive/2011/04/28/user-controls-and-server-controls-in-sharepoint.aspx

Question 37
You are creating a Web Part in SharePoint Server 2010.
You need to ensure that the Web Part can send data to another Web Part.
Which interface should you override?
A. IQueryable
B. ISerializable
C. IWebEditable
D. IWebPartField

解析:

  本题考的是从一个Webpart向另一个Webpart传递数据,需要什么接口。属于WebPart之间建立连接的知识范畴。

  Web 部件连接是两个服务器控件之间的链接或关联,使二者可以共享数据。一个连接始终正好涉及两个控件:一个是数据提供者,另一个是提供者所提供数据的使用者。一个控件既可以是使用者,也可以是提供者,并且无论是 WebPart 控件、自定义控件还是用户控件,任意类型的服务器控件都可以设计为参与连接。

选项A. Iqueryable: 是属于LINQ的概念,IQueryable 接口由查询提供程序实现。该接口只能由同时实现 IQueryable<T> 的提供程序实现。如果该提供程序不实现 IQueryable<T>,则无法对提供程序数据源使用标准查询运算符。IQueryable 接口继承 IEnumerable 接口,以便在前者表示一个查询时可以枚举该查询的结果。

选项B. Iserializable: 是属于序列化方面的概念,允许对象控制其自己的序列化和反序列化过程。序列化是将对象或对象图转换为线性的字节序列以存储或传输到其他位置的过程。反序列化是接受存储的信息并利用它重新创建对象的过程。通过 ISerializable 接口,类可以执行其自己的序列化行为。

选项C. IwebEditable: IWebEditable 接口使您能够将自定义 EditorPart 控件与服务器控件相关联--例如 WebPart 控件、用户控件或自定义服务器控件。也即:为开发人员提供一个接口指定编辑器与 WebPart 控件的控件的自定义。

选项D. IwebPartField: 此接口旨在用于 Web 部件连接。在 Web 部件连接中,位于 WebPartZoneBase 区域建立连接和共享数据,其中一个控件作为使用者的与另一个控件作为提供程序的两个服务器控件。共享的数据结构在 Web 部件连接是接口实例,提供程序提供给使用者传递回调方法。若要建立连接,使用者和提供者都必须都与共享数据同一个接口类型一起使用。 

 所以本题目正确选项应该是D

参考:
http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.webparts.iwebpartfield.aspx
http://msdn.microsoft.com/zh-cn/library/ms178187(v=vs.100).aspx
http://msdn.microsoft.com/zh-cn/library/system.linq.iqueryable.aspx
http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.webparts.iwebeditable.aspx

Question38
You plan to create a Web Part for a SharePoint site.
You need to ensure that the Web Part can send data to other Web Parts in the site.
What should you do?
A. Implement the IAlertNotifyHandler interface.
B. Implement the IAlertUpdateHandler interface.
C. Create a custom interface that uses the WebBrowsable and the WebPartStorage attributes.
D. Create a custom interface that uses the ConnectionProvider and ConnectionConsumer attributes.

解析:

 题意可以看出,它是要考你WebPart建立连接的知识。下面来看看各个选项。

选项A. IAlertNotifyHandler  在 microsoft.sharepoint.dll 中,提供发送警报信息的相关方法。 例如可能通过IAlertNotifyHandler来自定义Alert Email。显然此接口与WebPart之间的连接无关。

选项B. IAlertUpdateHandler : 此接口通常与IAlertNotifyHandler接口配合使用,实现通知处理程序。通过在 IAlertNotifyHandler 接口中实现 OnNotification 函数,可以捕获通知事件。

通过在 IAlertUpdateHandler 中实现 PreUpdate 和 PostUpdate 函数,可以捕获通知创建或修改事件。显然它们也与Webpart之间的连接无关。

选项C. WebBrowsable和WebPartStorage, 它们与Webpart控件的属性管理有关,WebBrowsable可以使Webpart的相关属性 (Property) 在用户编辑 Web 部件时显示在工具窗格中,也即:你可以在用户界面上看到甚至修改它。 WebPartStorage用于定义Webpart的属性是如何被保存的。一般有三种方式:Storage.Shared即此属性设置为所有用户共用。Storage.Personal:即此属性为每个用户私人拥有。Storage.None即此属性不保存在数据库中,一般用于不提供给用户操作的某些属性(例如:公司的Logo)。所以很显然,此选项也与本题无关。

选项D. ConnectionProvider和ConnectionConsumer  我们知道Web 部件连接是两个服务器控件之间的链接或关联,使二者可以共享数据。一个连接始正好涉及两个控件:一个是数据提供者(ConnectionProvider),另一个是提供者所提供数据的使用者(ConnectionConsumer  )。一个控件既可以是使用者,也可以是提供者,并且无论是 WebPart 控件、自定义控件还是用户控件,任意类型的服务器控件都可以设计为参与连接。所以,Webpart的连接就是围绕着ConnectionProvider和ConnectionConsumer展开的。

所以本题目正确选项应该是D

参考:
http://msdn.microsoft.com/zh-cn/library/microsoft.sharepoint.ialertupdatehandler.aspx
http://msdn.microsoft.com/zh-cn/library/bb897791(v=office.12).aspx
http://msdn.microsoft.com/zh-cn/library/dd585825(v=office.11).aspx
http://msdn.microsoft.com/zh-cn/library/ms178187(v=vs.90).aspx
http://msdn.microsoft.com/zh-cn/library/ff597538.aspx

Question39
You are creating two Web Parts named WPMaster and WPDetails.
You need to ensure that when an item is selected from WPMaster, the details of the item are displayed in WPDetails.
What should you implement in WPMaster?
A. ICellProvider
B. IListProvider
C. IWebPartRow
D. IWebPartTable

解析:

  本题仍然是Webpart连接的内容。想要实现的是在两个Webpart之间建立类似于“主-从表”之间的效果,即在一个Webpart中点选了一个Item,就在另一个Webpart中显示一行关于此item的详细信息。

分析各选项:

A. IcellProvider: 此接口用于配合ICellConsumer接口来实现在两个Webpart之间传递“单值”数据的(single value: [例如一个单元格或字段])目的。这两个接口已过时,因此不用再深入了解它们。它已经被IWebPartField 代替了。

B. IlistProvider 此接口用于定义事件(Events), 配合IListConsumer 接口,实现在两个Webpart之间传递整个List(Entire List [rowset] of data)的功能。这两个接口也已经过时,它们被IwebPartTable接口代替了。

C. IwebPartRow 是一个提供者接口,属于 Web 部件控件集中的标准接口,”用于基于数据行创建连接” ,即Webpart之间传递的是”数据行”数据(这正是本题需要的: 根据所选”主”值,传回相关的”从”数据行)。

D. IwebPartTable 此接口用于实现在Webpart之间基于整个数据表的传递连接。

对于上述的接口,您也可以创建自定义接口以用于 Web 部件连接,但在由数据驱动的许多 Web 应用程序中,基于数据源中的公共字段(参见 IWebPartField 接口)、表(参见 IWebPartTable 接口)或者行创(参见 IwebPartRow接口)建连接是很有用的。

 

所以本题目正确选项应该是C

参考:
http://msdn.microsoft.com/zh-cn/library/microsoft.sharepoint.webpartpages.communication.icellprovider.aspx
http://msdn.microsoft.com/zh-cn/library/dd586425(v=office.11).aspx
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.iwebpartrow.aspx
http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.webparts.iwebpartrow(v=vs.80).aspx
http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.webparts.iwebparttable.aspx

 

Question 40
You need to send a single value from a consumer Web Part to a provider Web Part.
Which interface should you use?
A. IAlertNotifyHandler
B. IWebPartField
C. IWebPartParameters
D. IWebPartRow

解析:

本题的目的是在Webpart之间传递“单值”(single value)数据。

直接分析各选项:

选项A. IalertNotifyHandler在 microsoft.sharepoint.dll 中,提供发送警报信息的相关方法。 例如可能通过IAlertNotifyHandler来自定义Alert Email。显然此接口与WebPart之间的连接无关。更谈不上还要在两个Webpart之间传递“单值”数据了

选项B. IWebPartField 此接口用于在Web 部件控件之间实现根据数据字段的连接标准接口,即在它们之间传递“单值”数据,正是本题想要的答案。

选项C. IwebPartParameters: 在 Web 部件连接中,数据通常从提供者发送至使用者。但在某些情况下,提供者需要使用者的参数来确定它应发送回哪些值。IWebPartParameters 接口定义要实现的成员,这些成员有助于从使用者到提供者传递参数。也就是说,它是用来控件发送的数据的。

选项D. IwebPartRow 是一个提供者接口,用于实现Webpart之间传递” 数据行”

所以本题目正确选项应该是B

参考:
http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.webparts.iwebpartfield.aspx

 

Question 41
You need to connect two Web Parts by using the IWebPartRow interface.
Which method should you use?
A. DataItem
B. GetFieldValue
C. GetRowData
D. GetTableData

解析:

 本题是需要你判断备选项中哪个是属于IwebPartRow接口的方法。

A. DataItem 从字面上判断也绝不是属于”方法”的命名规范,至于它属于哪个类的对象,搜索一下,也许你能找到许多答案,但绝不是本题的答案。

B. GetFieldValue. 属于IwebPartField接口所包含的方法, 此接口用于在Web 部件控件之间实现根据数据字段的连接标准接口,即在它们之间传递“单值”数据

C. GetRowData 属于IWebPartRow接口所包含的方法, IwebPartRow是一个提供者接口,用于实现Webpart之间传递” 数据行”

D. GetTableData 属于IwebPartTable接口所包含的方法, 此接口用于实现在Webpart之间基于整个数据表的传递连接。

所以本题目正确选项应该是C

参考:
http://msdn.microsoft.com/zh-cn/library/microsoft.sharepoint.webpartpages.communication.icellprovider.aspx
http://msdn.microsoft.com/zh-cn/library/dd586425(v=office.11).aspx
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.iwebpartrow.aspx
http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.webparts.iwebpartrow(v=vs.80).aspx
http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.webparts.iwebparttable.aspx

Question 42
You create a sandboxed solution that contains a Web Part.
You need to debug the Web Part by using Microsoft Visual Studio 2010.
To which process should you attach the debugger?
A. owstimer.exe
B. spucworkerprocess.exe
C. spucworkerprocessproxy.exe
D. w3wp.exe

解析:

 本题主要想考你Sandbox Solution的Debug方面的相关知识。

在Sharepoint的开发环境中调试不同的对象有时需要Attach到不同的进程,下面就是一些常见的情况

   1、Farm Solution     -----W3WP.EXE

   2、SandBox Solution   -----PUCWorkerProcess.exe,( SharePoint 在一个独立于主 IIS 应用程序池 (w3wp.exe) 进程的进程 (SPUCWorkerProcess.exe) 中运行沙盒解决方案代码。所以你必须在SPUCWorkerProcess上进行调试)

   3、用到了Full-trust Proxy的SandBox Solution--SPUCWorkerProcessProxy.exe

   4、feature receivers----Feature Receiver默认情况下是自动被Visual Studio 启动。你可以在Visual Studio的部署设置中更改这种设置。

        4.1、feature receivers的 activation/deactivation :根据它被activation/deactivation 的方式,你需要Attaching到不同的进程。

             • 在web界面上启动或停止----W2WP.EXE

             • 在PowerShell中启动或停止---- PowerShell.exe

        4.2、feature receivers的 FeatureInstalled/FeatureUninstalling/FeatureUpgrading(安装/卸载/升级)----- owstimer.exe

所以本题目正确选项应该是B

参考:
http://msdn.microsoft.com/zh-cn/library/ee231562.aspx
http://msdn.microsoft.com/en-us/library/ee231550.aspx
http://www.cnblogs.com/wsdj-ITtech/archive/2011/12/08/2258260.html

Question 43
You create a custom Web Part.
You need to create a class to log Web Part errors to the Unified Logging Service (ULS) logs.
What should you use?
A. the ILogger interface
B. the ILoggingProvider interface
C. the SPDiagnosticsServiceBase class
D. the SPPersistedObject class

解析:

 本题想要实现定义某个类,完成向ULS中写入Error信息的功能。

每台运行 Windows SharePoint Services 3.0 和 Office SharePoint Server 2007 的服务器都会将日志记录信息写入 ULS 日志文件和服务器事件日志。在服务器场中每台运行 SharePoint 的服务器上的 {SharePoint Root}\LOGS 文件夹中找到的 ULS 日志文件可包含相当多的信息,具体取决于诊断日志限制的配置情况。尽管通常情况下日志记录越详细越好,但在日志文件中查找特定项可能会有一定难度。

通过为每个日志项分配唯一性,SharePoint 2010 提高了查找特定日志项的效率。此唯一性(称为相关令牌)是一个在出现错误时提供给用户的 GUID。管理员或开发人员随后可在错误中提取此 GUID 字符串,并使用它在日志文件中搜索特定项。这将加快在日志文件中查找项的速度以便跟踪特定事件。

在 Windows SharePoint Services 3.0 中,写入 SharePoint 跟踪日志和统一日志记录系统 (ULS) 日志的唯一方法是实现在实现其他代码时所需的 IDiagnosticsManager 接口。但在 SharePoint Foundation 中,首选方法是使用 SPDiagnosticsServiceBase 类,该类包含与 ULS 日志进行交互的更简单且更有效的方法,尤其是可轻松实现的 WriteEvent 和 WriteTrace 方法。所以选项C是本题的答案。

选项A. the ILogger interface 此接口是从 .NET Framework 2.0 版中开始新增的,用于定义代码生成任务报告错误时使用的接口。它用于定义 MSBuild 记录器,该记录器订阅生成系统事件。

选项B. the ILoggingProvider interface 此接口提供关于logging providers的通用功能定义。位于Microsoft.SharePoint.Administration命名空间,因此属于Administration管理方面的范畴。此空间提供了管理Windows SharePoint Services deployment的相关类型和成员。

选项D. the SPPersistedObject class  用于为对象提供自动序列化其状态值并持久保存以及在需要时获取前面所保存的值并反序列化的相关方法。也即,它属于定义自定义管理设置方面的类。  在 Windows SharePoint Services 平台上构建应用程序时,您可能需要创建一个类以定义应用程序的自定义属性设置并提供用于存储这些设置的方法。Windows SharePoint Services 3.0 中的 Microsoft.SharePoint.Administration
命名空间引入了对象持久性,使用它可将派生自基础 SPPersistedObject 类的类保留到 Windows SharePoint Services 数据库中。若要创建保留的对象,您可以创建一个类,该类从 SPPersistedObject 或派生自 SPPersistedObject 的 Microsoft.SharePoint.Administration 命名空间中的某个类继承。此类可以定义一个用于存储 Windows SharePoint Services 数据库中的自定义属性设置的对象模型。例如,您可以创建通过某种方式使用
Windows SharePoint Services 的 Windows 服务,这将需要创建一个继承自 SPWindowsService 类的类,以便存储特定于 Windows 服务的设置。已编译的 DLL 将为客户提供一个可用于检索或保存属性的对象模型。Windows SharePoint Services 提供用于存储设置的方法和位置,并管理它们对服务器场中的所有服务器和过程(包括缓存刷新)的可用性。

  在实际使用中,我们也可用它来保存用户的某些配置信息。

 

所以本题目正确选项应该是C

参考:
http://msdn.microsoft.com/zh-cn/library/ee535240(v=office.14).aspx
http://blogs.msdn.com/b/sharepoint_cht/archive/2011/03/24/uls-2.aspx
http://msdn.microsoft.com/zh-cn/library/microsoft.servicemodel.domainservices.tools.ilogger(v=vs.91).aspx
http://msdn.microsoft.com/zh-cn/library/microsoft.sharepoint.administration.iloggingprovider.aspx
http://msdn.microsoft.com/zh-cn/library/gg512103(v=office.14).aspx
http://msdn.microsoft.com/zh-cn/library/bb861848(v=office.12).aspx

 

Question 44
You create a SharePoint farm solution that contains a Web Part.
You need to debug the Web Part by using Microsoft Visual Studio 2010.
To which process should you attach the debugger?
A. owstimer.exe
B. spucworkerprocess.exe
C. spucworkerprocessproxy.exe
D. w3wp.exe

解析:

 还是关于Sharepoint项目如何Debug的问题。

 参考Question 42

本题目正确选项应该是D,因为Farm Solution是运行于Windows SharePoint Services 进程 (w3wp.exe)上的。

参考:
http://msdn.microsoft.com/en-us/library/ff798425.aspx
http://msdn.microsoft.com/zh-cn/library/ee231550.aspx

Question45
You create and deploy a custom Web Part.
You add the Web Part to a page and receive a run-time error. You need to display the detailed information of the error on the page.
Which two actions should you perform? (Each correct answer presents part of the solution. Choose two.)
A. In the web.config file, set CallStack="True".
B. In the web.config file, set customErrors="RemoteOnly".
C. In the registry, set the EnableDebug value to 1.
D. In the registry, set the DisableLoopbackCheck value to 1.

解析:

 本题大意就是你在部署一个Webpart后出现了运行时错误,如何在页面上呈现详细的错误信息。Sharepoint提供了不少的手段来捕获详细的错误信息,但就本题提供的选项来看,它集中在两点: Web.config与Registry。

 关于Web.config的上述两个属性的描述

使用 CallStack 属性

Windows SharePoint Services 可设置 CallStack 属性,该属性位于 Web.config 文件中。CallStack 属性控制当 ASP.NET 处理向所有本地和远程客户端发送页面的请求时,如果发生系统级异常,是否显示调用堆栈和异常消息。在默认情况下,Windows SharePoint Services 禁用 CallStack 属性,并显示一组有限的异常以防信息泄漏。要在发生异常时接收调用堆栈和异常消息,请启用 CallStack 属性。

方法:

启用 CallStack 属性

1. 在 Windows 资源管理器中,浏览至以下文件夹:

本地驱动器:\InetPub\WWWRoot\bin\

2. 双击 Web.config 文件。

3. 在 Web.config 文件中,搜索 元素。

4. 在<SharePoint>元素中,找到<SafeMode MaxControls="50" CallStack="false"/> 标记并将其更改为<SafeMode MaxControls="50" CallStack="true"/> 。

5. 保存并关闭文件。

现在,在发生异常时,您将收到 ASP.NET 异常消息和堆栈跟踪信息。

使用 customErrors属性

此属性为 ASP.NET 应用程序提供有关自定义错误信息的信息。可以在应用程序文件层次结构中的任意级别上定义 customErrors 元素。

  相关的值有:

  On : 指定启用自定义错误。如果未指定 defaultRedirect,用户将看到一般性错误。

  Off :指定禁用自定义错误。这允许显示标准的详细错误

RemoteOnly : 指定仅向远程客户端显示自定义错误并且向本地主机显示 ASP.NET 错误。

所以若要使他人能够从本地服务器计算机上查看此特定错误信息的详细信息,请在位于当前 Web 应用程序根目录下的“web.config”配置文件中创建一个 <customErrors> 标记。然后应将此 <customErrors> 标记的“mode”属性设置为“RemoteOnly”。若要使他人能够在远程计算机上查看详细信息,请将“mode”设置为“Off”。

 

关于Registry(注册表)的上述选项的描述

注册表是windows操作系统中的一个核心数据库,其中存放着各种参数,直接控制着windows的启动、硬件驱动程序的装载以及一些windows应用程序的运行,从而在整个系统中起着核心作用。这些作用包括了软、硬件的相关配置和状态信息,比如注册表中保存有应用程序和资源管理器外壳的初始条件、首选项和卸载数据等,联网计算机的整个系统的设置和各种许可,文件扩展名与应用程序的关联,硬件部件的描述、状态和属性,性能记录和其他底层的系统状态信息,以及其他数据等。

  在本题中的两项的作用如下:

 EnableDebug:允许是否调试。

DisableLoopbackCheck:用于控制是否进行环回检查,常用于安全身份验证,用于帮助防止计算机受到反射攻击。

 即使从字面上判断也知道,Registry中的这两个键与如何在页面上呈现详细的错误信息毫无关系。

所以本题目正确选项应该是A.B

 

参考:
http://www.khamis.net/blog/Lists/Posts/Post.aspx?ID=12
http://msdn.microsoft.com/zh-cn/library/bb397417(v=vs.90).aspx

 

 
Question 46
You have a Web Part that causes an error.
You need to ensure that you can view the trace history in the Trace.axd file.
What should you configure in the web.config file?
A. In the <system.web> element, add the following line of code:
<trace enabled="true" localOnly="true" pageOutput="false" />
B. In the <SafeMode> element, configure the following attributes:
CallStack="true"
AllowPageLevelTrace="true"
C. In the <SafeMode> element, configure the following attributes:
CallStack="false"
AllowPageLevelTrace="true"
D. In the <system.web> element, configure the following element:
<trace enabled="false" localOnly="true" pageOutput="true" />
In the <SafeMode> element, configure the following attribute:
AllowPageLevelTrace="true"

解析:

 本题是想通过调整Web.config的配置来实现查看保存在Trace.axd文件中的跟踪信息。

 先来看看什么是Trace.axd文件:

   以往的Web开发,为了调试一个变量,会在页面中用Response.write输出一段字符串,以验证web程序是否运行到此处及是 否正确获取了变量。也有人会调用封装好的js框架,alert或msgbox一条信息。这个在asp时代是最常见的方法。如果要调试比较复杂的信息,这种方法就显得有点力不从心。不过,进入asp.net环境后,微软为我们提供了一个新的解决方案-Trace.axd

跟踪会将诊断信息和自定义跟踪消息追加到页面输出中,并将此信息发送给提出请求的浏览器。或者,您可以在单独的跟踪查看器 (Trace.axd) 中查看此信息,该查看器显示 ASP.NET Web 应用程序中每个页的跟踪信息。在 ASP.NET 处理页请求时,您可以使用跟踪信息来调查错误或不希望得到的结果。

所以Trace.axd它的功能主要是:配置 ASP.NET 代码跟踪服务以控制如何收集、存储和显示跟踪结果。

Trace.axd的关键的几个选项:

1、localOnly ,默认为false。这个很好理解。如果为true,只在本地输出跟踪信息。

2、enabled。是否启用跟踪。

3、pageOutput  指定在每一页的结尾是否呈现跟踪输出。如果是 false ,则只能通过跟踪实用工具访问跟踪输出。

4、requestLimit  指定在服务器上存储的跟踪请求的数目。最大为10000,默认为10

5、traceMode  指定显示跟踪信息的顺序。SortByCategory或 SortByTime(默认)

如果要跟踪信息显示在与之关联的页的页尾,请将 trace 元素的 PageOutput 特性设置为 true。如果启用应用程序级跟踪,但不希望显示某些页的跟踪信息,可以在这些页的 @ Page 指令中将 Trace 特性设置为 false。

Trace元素可配置的位置:

  Machine.config

根级别的 Web.config

应用程序级别的 Web.config

虚拟或物理目录级别的 Web.config

从上面可以看出您可以对各个页进行配置以显示跟踪信息。此外,还可以对应用程序的 Web.config 文件进行配置,以便在除显式禁用跟踪的页之外的所有页中显示跟踪信息。设置应用程序级跟踪非常有用,因为这样就不必对各个页进行更改以启用或禁用跟踪。

 关于查看跟踪信息:

 你可以在各个页的底部查看跟踪信息。此外,在启用跟踪后,可以使用跟踪查看器 (Trace.axd) 来查看 ASP.NET 收集并缓存的跟踪信息。

 如果要跟踪信息显示在与之关联的页的页尾,请将 trace 元素的 PageOutput 特性设置为 true。

 如果启用应用程序级跟踪,但不希望显示某些页的跟踪信息,可以在这些页的 @ Page 指令中将 Trace 特性设置为 false。

 默认情况下,只能在本地 Web 服务器计算机上查看应用程序级跟踪。若要使应用程序级别跟踪信息可以通过远程计算机查看,可以将 trace 元素的 LocalOnly 特性设置为 false。

  为保护 Web 应用程序的安全,应仅在开发或部署应用程序时使用远程跟踪功能。在将应用程序传输到成品 Web 服务器之前,请确保禁用了该功能。为此,请在 Web.config 文件中将 LocalOnly 特性设置为 true。

 下面的示例演示一个可为多达 40 个请求收集跟踪信息的应用程序跟踪配置。该配置还使计算机(服务器除外)上的浏览器可以显示跟踪查看器。

<configuration>
<system.web>
<trace enabled="true" requestLimit="40" localOnly="false" />
</system.web>
</configuration>


有了上面的知识点,我们回过头来看各选项:

选项A: 正符合本题的设置需求,是本题的答案。

选项B.C用到了  <SafeMode>元素用于配置安全模式处理系统。

其中CallStack设置是否启用调用堆栈,默认情况下,CallStack 属性设置为 false。这种设置的影响是阻止 ASP.NET 会报告的大多数系统异常信息。这样做是为了防止信息泄露。如果设置为true,则会报告更多的异常信息,即堆栈信息。AllowPageLevelTrace属性设置是否允许跟踪页面级的信息。

当你遇到Sharepoint网页报错,且报错信息为: “未知错误” 时。就可以在该站点下的配置文件里面修改节点

1.<SafeMode MaxControls="200" CallStack="false" DirectFileDependencies="10" TotalFileDependencies="50" AllowPageLevelTrace="false">

改为:

<SafeMode MaxControls="200" CallStack="true" DirectFileDependencies="10" TotalFileDependencies="50" AllowPageLevelTrace="false">

2.<customErrors mode="On " /> 改为:<customErrors mode="Off " />

3.<compilation batch="false" debug="false ">改为; <compilation batch="false" debug="true ">

修改后就会把错误源显示出来。

   所以选项B.C和是否把信息输出到Trace.axd文件以供查看没有关系。

选项D .此项和选项A类似,它的错误在于设置了pageOutput为True,这就意味着跟踪信息不会写入到Trace.axd文件,而是直接显示在与之关联的页的页尾。所以选项D是错误的。

所以本题目正确选项应该是A

参考:
http://msdn.microsoft.com/en-us/library/6915t83k.aspx
http://msdn.microsoft.com/zh-cn/library/bb386420(v=vs.100).aspx
http://msdn.microsoft.com/zh-cn/library/6915t83k(VS.80).aspx

 

Question 66
You have a custom theme named MyTheme. The theme is defined in a file named MyTheme.thmx.
You have a console application that contains the following code segment. (Line numbers are included for reference only.)
01 using (SPSite site=new SPSite(“http://intranet”))
02 {
03   SPWeb web=site.OpenWeb();
04  
05 }
You need to programmatically apply the theme to a SharePoint site.
Which code segment should you add to the console application?
A. ThmxTheme.SetThemeUrlForWeb(web, "/_catalogs/theme/MyTheme.thmx", False);

B. web.AlternateCssUrl = "/_themes/MyTheme";
C. web.ApplyWebTemplate("MyTheme.thmx");
D. web.ThemedCssFolderUrl = "/_themes/MyTheme";

解析:

 本题想要做的事情就是通过代码去实现应用一个用户定义的主题。

 直接分析各选项:

选项A. ThmxTheme.SetThemeUrlForWeb(web, "/_catalogs/theme/MyTheme.thmx", False); SetThemeUrlForWeb 方法就是用来把主题应用到URL所指定的We上的。需要注意的是:如果那个Web已经应用了某个主题,且此主题不是共享的,那么此方法将会删除掉那个已经应用的主题。

SetThemeUrlForWeb方法定义如下:

public static void SetThemeUrlForWeb(

 SPWeb web,

 string themeUrl,

 bool shareGenerated

)

因此,选项A是本题答案。

选项B. web.AlternateCssUrl = "/_themes/MyTheme";本选项完成的是设置Web site的备用样式Alternate CSS (cascading style sheet)的URL路径。与设置主题Theme无关。

选项C. web.ApplyWebTemplate("MyTheme.thmx"); 本选项使用ApplyWebTemplate方法,此方法是用来设置site definition 或site template 的,所以,本选项参数都是错误的。

选项D. web.ThemedCssFolderUrl = "/_themes/MyTheme"; 本题的ThemedCssFolderUrl属性是用来设置包含了CSS文件的文件夹所在的URL,此CCS文件是被用在主题定义中的。 所以,它是关于文件路径的设置,而不是主题的设置。

所以本题目正确选项应该是A

参考:
http://msdn.microsoft.com/en-us/library/ee658324.aspx
http://msdn.microsoft.com/en-us/library/ff409648(v=office.14).aspx

Question 67
You plan to develop a Web Part that displays a SharePoint list.
The Web Part will verify the list permissions when users access by using the web.CurrentUser.DoesUserHavePermissions method.
You need to ensure that when users do not have permissions to the list, the Web Part displays the company's logo.
Which code segment should you add to the Web Part?
A. RunWithElevatedPrivileges
B. web.AllowUnsafeUpdates= true;
C. web.CurrentUser.RequireRequestToken = false;
D. web.ValidateFormDigest();

解析:

  本题是想在一个Webpart上展现List,并受权允许的用户访问此List,对无权访问的用户则只看得到公司的logo而看不到List。

  由于在题干中已经告知代码中采用了DoesUserHavePermissions 方法完成对用户访问权限的判定,所以问题的重点就不再是让你考虑如何去完成对用户访问权限的判定了,而是在权限判定之后如何操作才能得到题目所要求的显示效果。

  于是分析各备选项:

选项A. RunWithElevatedPrivileges特权提升是 Windows SharePoint Services 3.0 中增加的一项功能,使您能够使用更高的特权级别在代码中以编程方式执行操作。利用 SPSecurity.RunWithElevatedPrivileges 方法,您可以向在帐户上下文中运行一部分代码的委托提供高于当前用户的特权,通过这个方法,对于已经判定具有访问权限的用户,可以采用此方法去获取List的内容并显示出来。而对于没有访问权限的用户,则无限去取得数据库的内容并展现在List中。选项A是本题的正解。

选项B. web.AllowUnsafeUpdates= true; 此属性是用来标识是否允许更新数据库的。 通常而言SharePoint 2010 是要阻止开发人员对 GET 请求执行状态更改操作的。例如,在使用 GET 获取列表项或 Web 属性时,不允许 Microsoft ASP.NET 页更新列表项或 Web 属性的内容。但如果您的功能设计强制对 GET 请求执行状态更改操作,则您可通过将当前 Microsoft.SharePoint.SPWeb 类的 AllowUnsafeUpdates 属性设置为
true 以禁用此检查。请记住,在执行操作后重置该属性,并使用 try-catch-finally 块以确保异常不会将该属性保持为 true。因为此项存在安全隐患,所以,微软通常建议尽量避免使用 AllowUnsafeUpdates。就本题而言,本题不是操作List更新,而是操作List展现,所以此属性不是答案。

选项C. web.CurrentUser.RequireRequestToken = false; 此属性用来标识:SPUser对象是否需要Request token。它可以用在当你开发一个Sharepoint Web Part,此Web Part将用来承载Sharepoint 外部的应用程序时,就会用到此概念。例如:在Sharepoint 的Web Part中承载Microsoft Silverlight 应用程序。关于此方面的开发,微软称之为流体应用程序模型。如果有兴趣,你可以自己去找相关资料深入研究。对于本题而言,此属性不是用来控件List的内容显示与否的。

选项D. web.ValidateFormDigest(); 用于验证当前Request的Form Digest Control的。 此属性用于和“写入”相关的操作中的。根据微软的文档: 如果传递给 RunWithElevatedPrivileges 的方法包含任何写入操作,则调用 RunWithElevatedPrivileges 之前,应该调用 SPUtility.ValidateFormDigest() 或 SPWeb.ValidateFormDigest()。所以此方法也不是本题的答案。

所以本题目正确选项应该是A

参考:
http://www.shannonbray.com/2010/01/doesuserhavepermissions.html
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.allowunsafeupdates.aspx

 

Question 68
You create a Web Part that contains the following code segment. (Line numbers are included for reference only.)
01 public class WebPart1 : WebPart
02 {
03   public WebPart1() {}
04  
05   protected override void CreateChildControls()
06   {
07     Button clickButton = new Button();
08    
09     base.CreateChildControls();
10   }
11  
12   protected override void RenderContents(HtmlTextWriter writer)
13   {
14    
15     base.RenderContents(writer);
16   }
17 }
You discover that the clickButton button does not appear.
You need to ensure that clickButton appears.
What should you do?
A. Delete line 09.
B. Move line 07 to line 14.
C. Add the following line of code at line 08:
Controls.Add(clickButton);
D. Add the following line of code at line 08:
clickButton.Page = this.Page;

解析:

 本题是关于编写一个WebPart,想在其中呈现一个Button。

 本题没太多好讲的, 一般在aspx页面中,习惯上要动态加载控件是放在CreateChildControl()里面的,在里面创建Control然后用this.Controls.Add()来添加。本题重载了基类的CreateChildControl()方法,在自身的CreateChildControl()方法中实现添加控件到WebPart中。

 所以,选项A.B都破坏了CreateChildControl()方法功能结构。选项D则显得非常生僻,它仿佛是想把当前Page对象赋值给包含此Button控件的Page实例。为什么要这么做,就不得而知了。但不管如何,直接操作Button所属的Page与直接操作Button好像不太相关,所以,基于此判断,选项D也不该是本题的答案。

所以本题目正确选项应该是C

参考:
http://msdn.microsoft.com/en-us/library/ee231579.aspx
http://msdn.microsoft.com/en-us/library/ms476318(v=office.14).aspx

 
Question 69
You plan to create two Web Parts named Products and ProductDetails. You create an interface that contains the following code segment.
public interface Interface1
{
    string Productid { get; set; }
}
You need to ensure that the Products Web Part sends ProductId to the ProductDetails Web Part. You must achieve this goal by using the ASP.NET Web Part connection framework.
What should you do?
A. Implement Interface1 in the Products Web Part.
B. Implement Interface1 in the ProductDetails Web Part.
C. Add a private set-accessor-declaration to the Productid property.
D. Add a protected set-accessor-declaration to the Productid property.

解析:

 本题是想要基于ASP.NET Web Part connection framework在两个Web Part之间传递数据。从题目描述可知,Product部件是信息的提供方(Provider),ProductDetails部件是信息的用户方(Consumer)。

 一般的操作步骤是先创建 Web 部件连接接口(Interface),然后创建源 Web 部件(Provider),此Provider WebPart需要实现前面创建的接口。然后再创建目标 Web 部件(Consumer),此Consumber WebPart需要在其 CreateChildControls 子例程后插入 ConnectionConsumer 属性。这样可为 ConsumerWebPart Web 部件提供连接目标接口点。然后就可以部署并在Sharepoint UI上配置建立连接了。

 所以,从上面的描述我们就可以看到,本题题干部分建立了这个接口,然后在选项中,只有选项A是在Products Web Part实现此接口(因为Product部件是Provider方)。所以选项A就是本题答案。

  至于选项C.D都只是对Productid属性变量的访问限定,并不涉及Webpart连接接口的实现,所以不是本题的答案。

所以本题目正确选项应该是A

参考:

http://msdn.microsoft.com/zh-cn/library/ff597538(v=office.14).aspx
http://msdn.microsoft.com/en-us/library/ms469765.aspx
http://johanolivier.blogspot.com/2010/08/sharepoint-2010-provider-consumer-web.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Sharepoint 习题 Webpart