KMS Project 1- 匿名模式下打开SharePoint中Office文档的方法

     对于KMS而言,在技术层面来说,知识的存储、展现与搜索是系统的核心部分。由于我们的KMS project采用ASP.net+SPS+SQL Server技术结构,通过调用WSS对象模型把知识文档存储在Portal Server中。我们现在要讨论的知识的展现层,主要是在匿名模式访问WebApplication且客户端并未加入域的情况下,打开Office文档时所会碰到的问题及解决方法。

      正常情况下,我们会通过直接访问文档的URL方式,在IE中打开。如:Http://localhost/sites/beijing/kms.doc在IE地址栏上敲入以上链接,可真接访问kms.doc文档。虽然可以打开浏览但是却需要用户验证信息,即AD帐号,当然在弹出验证框后点取消,同样可以浏览文档。那是为什么呢?我们通过NetMon抓包发现,Word、Excel会主动发起认证请求,由于客户端并没有登录到域,所以会返回401认证失败,导致要用户验证。要怎么来解决这个问题(弹框)呢?那只好把客户端全加入到域,一切OK!其它方法小弟没招了,能解决的朋友还望能指点一二。
小弟的Project中要让客户端加入到域,那客户准会砍人。这样一来正常情况是没法解决了,怎么办呢?
       当然第二种办法马上出场,前面谈到Word、Excel要认证请求,如果能通过在背后代码中通过模拟AD帐号来实现用户验证(Impersonate),不就避免了弹框验证了吗?再用下载文档方式打开,哈哈!好像可以。马上就试!~~~~~~~~~~~~~~~~编码完毕!调试运行,弹框问题没了,但却发现每次打开文档都会弹出一个下载框,要求打开还是保存按钮。且要经历SPS->服务器端->客户端的下载过程,对于一些大Document就死定了,挑剔的客户当然很不悦,放言对面就是地雷我们也要踩过去。我们也像是热锅里的蚂蚁--急。
       天无绝人之路,请教了一下MS牛人们终于找到了一点解决方法:用vc写一个控件,用IE脚本调用,该控件利用了platform SDK提供的一个叫URLDownloadToCacheFile  
http://msdn.microsoft.com/library/default.asp?url=/workshop/networking/moniker/reference/functions/urldownloadtocachefile.asp 的方法,将该文件下载到本地临时文件夹中,然后调用相关程序打开这个文件。

就这种问题解决了,客户也爽了!这只是小弟的这点心得,希望能给碰到类似问题的人带去一点见解。
在此向帮助本人所有人说声谢谢!

posted @ 2004-12-18 15:13  HenryZheng  阅读(1138)  评论(1编辑  收藏  举报