深入Favorites Service 中的问题
如果你想使用Favorites Service并遇到了问题,你会怎么做呢?例如,你可能在登陆时会看到这样的消息:"Favorites现在不能使用。请您的网站管理员查看日志中的详细信息"。这时应该怎么处理呢?
首先,你应该按照消息中的指示去做。如果你在单机上进行了完整安装,那你就是网站管理员,所以你应该查看事件日志。Favorites Service(包括范例客户站点)在Application日志中记录事件,source是"Favorites Web Service"。出错消息如下所示:
图七 Favorites Service日志范例 |
你可能注意到图七中描述框的内容还有待改进。我们现在没有提供更好的日志功能。由于日志功能是由VB写的DLL实现的,因此很难使用C++工具来定制日志中的格式化字符串。当日志查看器无法正确显示信息时,就将传递给日志的字符串显示出来。在这里就是"/ssf/logon.asp: Nonsecure Logon request attempted."。这表明有人试图通过非SSL的连接方式进行登陆,所以用户名和密码没有经过加密。而Favorites Service是不会接受非SSL传递的登陆请求的。
如果你怀疑你的日志中没有应该可以看到的日志记录,请你确认Application Event Log没有设置RestrictGuestAccess键。在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application中查看RestrictGuestAccess设置。默认状态下该键值为0,表示guess access是允许的。但是如果你对系统的安全性做过调整,或你的域安全策略在这方面有限制,那么这个设置会被启动。由于Favorites Service是运行在匿名账号下的,只有guest权限,如果RestrictGuestAccess设为1,你在事件日志中就看不到Favorites Service的事件了。
有时候,你除了日志信息外还需要一些其他的信息。例如,你可能收到一个加入喜好的请求,但产生了一个SOAP错误,你想要得到关于这个请求的更多的信息。Favorites Service有一个审计日志记录了它所有的活动供你查看。审计信息是存放在SSF-Report数据库中的AuditLog表中的。你可以使用SQL Query Analyzer或在Microsoft SQL Server?的Enterprise Manager中选择Return all rows查看所有的信息。Actiontype字段可以通过ActionType表以更友好的名字表示。而description字段中会包含与请求相关的额外信息。
怎样才能跟踪与请求相关的IP地址呢?你可能想要设置一些限制,或查看请求来自何方。审计日志中只告诉你时间,但没有IP地址。在http://www.coldrooster.com/,我们用IIS 日志来记录HTTP相关信息。为了跟踪日志记录中的请求的IP地址,我们要查看审计日志中的时间戳,在IIS日志中寻找相应的信息。通常在同一时间段中,不会有太多的请求同时发生。请记住,IIS日志默认是按格林尼治标准时间来记录时间戳的,所以你在做相应的查找时,必须做一些相应的时区转换。
最后一个我们要讨论的问题与web farm有关, 就像http://www.coldrooster.com中:我们的Web服务器上不仅有Favorites Service的虚拟目录,还有其他的虚拟目录,如SSFPublic,coldrooster.com目录等。这使问题变得复杂,因为如果要查找一个问题,它可能发生在三台机器中的任何一台。同样,当一个错误的请求发送过来,并不确定是哪一个服务器来处理的。请注意,在一台单机上是很容易查找问题的,当与内部Web请求可能相关,要到其他机器上去寻找问题时,就会有问题了。要同步所有机器上不同的事件是很困难的,但并不是不可实现的。
小结 在这篇文章中,我们提供了一些Web Service故障检测和处理的方法,并以Favorites Service为例进行说明。这可以帮助解决一些你实际中遇到的问题。如果想要得到更多的关于开发Favorites Service的信息,请查阅Favorites Service Overview.
查看本文来源