快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

和记娱到h88285:Sharepoint 70573考试习题和解析(Q1Q3)



Question 1

You have a helper method named CreateSiteColumn that contains the following code segment.

private static void CreateSiteColumn(SPWeb web, string columnName)

{

}

You need to add a new site column of type Choice to a SharePoint site by using the helper method.

Which code segment should you include in the helper method?

A. SPField field = new SPFieldChoice(System.web.Lists[0].Fields, columnName);

B. web.Fields.Add(columnName, SPFieldType.Choice, true);

C. web.Lists[0].Fields.Add(columnName, SPFieldType.Choice, True);

D. web.Lists[0].Views[0].ViewFields.Add(columnName);

解析:

本题的意图是向Sharepoint Site中添加一个新的Site Column。

Site Columns是Sharepoint网站的一个紧张底层布局,它是一类可重用的列定义或模板,可以将其分配给一个或多个 SharePoint 网站的一个或多个列表(List)。一个Site Column是由几个属性定义的,包括名称及其字段类型。例如 Title这个Column,其名称便是Title,字段类型便是Text。

我们即可以经由过程Sharepoint的治理界面添加新的Site Column,也可以经由过程Sharepoint Designer添加新的Site Column,还可以经由过程代码添加,比如应用如下代码

(http://msdn.microsoft.com/zh-cn/library/ms472869.aspx)

using (SPWeb oWebsite = SPContext.Current.Site.AllWebs["MySite"])

{SPFieldCollection collFields = oWebsite.Lists["MyList"].Fields;

collFields.Add("MyField", Microsoft.SharePoint.SPFieldType.Text,true);

}

即指定某Sharepoint Site的某个列(List),应用List的Fileds属性的Add措施添加Site Column,在添加的措施中可指定新的SiteColumn的名字,类型以及是否必需包孕数值。是以在供给的备选谜底中,B是精确谜底。

选项A:应用要领纰谬,SPFieldChoice 构造函数的应用定义如下:

SPFieldChoice(SPFieldCollection, String)Initializes a new instance of the SPFieldChoice class based on the specified field collection and field name.

SPFieldChoice(SPFieldCollection, String, String)Initializes a new instance of the SPFieldChoice class based on the specified field collection, type name, and display name.

很显着A选项的应用措施与应用参数是纰谬的,尤其是第二个参数应该是FieldName而非ColumnName和记娱到h88285。

假如要向一个List中添加Choice类型的Column则可以应用如下类似的代码:( 思路便是先向指定的List添加一个Choice类型的SiteColumn,再设置这个SiteColumn的备选项)

lstCustomList.Fields.Add("ABC", SPFieldType.Choice, false); //添加一个新的Field

lstCustomList.Update();SPFieldChoice objChoiceCol = (SPFieldChoice)lstCustomList.Fields["ABC"]; //设置这个新添加Field的属性

string[] strdata = new string[2];strdata[0] = "Open";

strdata[1] = "Close";objChoiceCol.Choices.Add(strdata[0]);

objChoiceCol.Choices.Add(strdata[1]);objChoiceCol.Update();

lstCustomList.Update();

选项C.没有这种用法。Lists【】中应该是ListName或Guid, 而不是所谓的索引值。类似的用法拜见如下代码

private static void CreateList(string listName)

{using (v和记娱到h88285ar site = new SPSite(SiteUrl))

{var web = site.RootWeb;

var listId = web.Lists.Add(listName, string.Empty, SPListTemplateType.GenericList);

var list = web.Lists[listId];

list.OnQuickLaunch = true;list.Update();

var title = list.Fields["Title"];

title.Title = "Name";title.Update();

var empFieldName = list.Fields.Add("Employee", SPFieldType.Boolean, false);

var rateFieldName = list.Fields.Add("Salary/Rate", SPFieldType.Currency, true);var bioFieldName = list.Fields.Add("Bio", SPFieldType.Note, false);

var view = list.DefaultView;

view.ViewFields.Add(empFieldName);view.ViewFields.Add(rateFieldName);

view.ViewFields.Add(bioFieldName);view.Update();

}

选项D.也没有这种用法,况且假如要向一个List的视图中新添加Column,也仅限于添加已经存在的Column到此SPViewFieldCollection中。以是本选项是不能实现向List中添加新的Site Column的。而向List中添加新的Column的代码如下:

SPSite oSiteCollection = SPContext.Current.Site;

using(SPWeb oWebsite = oSiteCollection.AllWebs["Website_Name"]){

SPList oList = oWebsite.Lists["List_Name"];SPView oView = oList.Views["All Items"];

SPViewFieldCollection collViewFields = oView.ViewFields;collViewFields.Add("Created");

oView.Update();

}

以是本题目精确先项应该是B

Qestion2:

You have a Web application that contains the following cod和记娱到h88285e segment.

private void CreatingSPSite()

{

SPSite siteCollection = null;

try

{

siteCollection = new SPSite("http://contoso.com");

}

finally

{

}

}

You need to prevent the code segment from causing a memory leak.

Which code segment should you add?

A.

if (siteCollection != null)

{

siteCollection.Close();

}

B.

if (siteCollection != null)

{

siteCollection.Dispose();

}

C.

siteCollection = null;

D.

siteCollection.WriteLocked = false;

解析:

这是一个考证关于Sharepoint代码内存泄露的问题,Sharepoint既然是构建于.NET Framework之上的,为什么还存在内存泄露呢?

这是由于某些Sharepoint的办事器工具(Services Objects) 如: SPSite, SPWeb和记娱到h88285 虽然是Managed Objects,但出于前进其运行效率的必要,它们内部的实今世码应用了某些UnManaged 的代码,是以,就造成了你必要自己去办理内存泄露的问题。

在本题的供选项中,C.D可以显着的扫除,必要关注的便是A与B。

我们知道,Dispose与Close都可以用于开释内存,但Close措施只能用在你先自行创建了SPSite工具,然后再去开释它。假如你是引用(Reference)了一个SPSite工具,你就不能经由过程Close措施去开释它。

以是我们平日保举应用Dispose措施来代替Close措施,由于在Dispose措施中终极照样调用了Close措施,但它是经由过程IDisposable接口来实现的,以是.NET Framework的垃圾收受接收机制会调用 Dispose措施来开释与此工具相关的内存。 是以本题目精确选项应该是B

相关参考:

http://msdn.microsoft.com/zh-cn/library/microsoft.sharepoint.spsite.close.aspx

http://msdn.microsoft.com/zh-cn/library/aa973248(v=office.12).aspx

Question 3

You deploy a custom Web Part named WebPart1 to a SharePoint site.

WebPart1 contains the following code segment. (Line numbers are included for reference only.)

01 protected void Page_Load(object sender, EventArgs e)

02 {

03SPSite site = null;

04try

05{

06SPSite site = new SPSite("http://www.contoso.com/default.aspx");

07SPWeb web = site.OpenWeb();

08

09...

10}

11catch

12{

13

14}

15finally

16{

17

18}

19 }

After you deploy WebPart1, users report that the pages on the site load slowly.

You retract WebPart1 from the site.

Users report that the pages on the site load without delay. You need to modify the code in WebPart1 to prevent the pages from loading slowly.

What should you do?

A.

Add the following line of code at line 08:

site.ReadOnly = true;

B.

Add the following line of code at line 13:

site.Dispose();

C.

Add the following line of code at line 17:

site.Dispose();

D.

Add the following line of code at line 17:

site.ReadOnly = true;

解析:

从题意阐发,因为加载了一个用户定义的Webpart而使页面出现迟钝,当然,对付一个Webpart而言可能有许多缘故原由让页面出现迟钝的,比如:当Webpart涉及到与后台数据库数据互换时,当Webpart与Webservice办事交互信息时……等等.

而从本题目供给的代码中,仅涉及到了一个SPSite工具的创建,以是题目本身就把Webpart出现迟钝的缘故原由约束于SPSite工具上。

对付A.D是把Site Collection设置和记娱到h88285只读,即:把Site Collection锁定,不再进行任何写入操作。此类操作并不影响页面的出现,由于页面的出现原先便是个读取的历程。

以是问题归结到SPSite工具所引起的内存透露上,办理此问题要经由过程Dispose措施实现,问题是Dispose措施的办理机会,显然,此措施应该放在Finally代码区,由于此区不管你整体代码是否呈现非常都邑最履行到这里,而假如仅放在Catch区,则当上面的代码段并无非常时,由SPSite引起的内存透露照样没有办理,由于此内存透露并不属于Error范畴,以是不会跳到Catch区进行办理。

以是本题目精确先项应该是C

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: