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
Question47
You create a user control named MySearch.ascx.
You plan to change the native search control in SharePoint to MySearch.ascx. You need to provide the site administrator with the ability to change the out-of¬the-box search control to MySearch.ascx.
What should you do?
A. Configure the SearchBox.dwp in the Web Part gallery.
B. Override the search delegate control by using a Feature.
C. Modify the <SafeControls> element in the web.config file.
D. Modify \14\TEMPLATE\FEATURES\SearchWebParts\SearchBox.dwp.
解析:
本题是想要实现替换系统默认的Search控件,代之以用户自定义开发的用户控件。
其实质是Delegate Control的知识点。
选项A. Configure the SearchBox.dwp in the Web Part gallery. 此选项的意思是把SearchBox解决方案部署到Web Part Gallery,这只是改变了Solution文件包的存放位置,与替换系统默认的Search控件毫无关系。
选项B. Override the search delegate control by using a Feature. Delegate Control一般用于在Master Page上,它允许你使用自定义的控件来替换Sharepoint默认的控件。本题就是要实现替换系统默认的Search控件,代之以用户自定义开发的用户控件,此功能在我以前的一篇博文中实现过,请参见http://www.cnblogs.com/wsdj-ITtech/archive/2011/11/26/2263041.html
选项C. Modify the <SafeControls> element in the web.config file。 在Sharepoint 中只有确保受信任的控件才能在系统中使用。SharePoint将只加载在web.config文件中的SafeControl元素定义的控件。所以本选项只是注册了用户自定义控件为安全的可显示控件,并没有解决它能代替系统默认的Search控件的问题。
选项D. Modify \14\TEMPLATE\FEATURES\SearchWebParts\SearchBox.dwp. 此选项只是围绕用户自定义控件的解决方案部署包进行修改,与替换系统默认的Search控件毫无关系。
所以本题目正确选项应该是B
参考:
http://sharepointschool.net/2010/10/14/customizing-the-search-box-using-a-feature/
http://msdn.microsoft.com/zh-cn/library/ms470880(v=office.14).aspx
http://msdn.microsoft.com/zh-cn/library/ff650763.aspx