windows 2008 服务器和经典 ASP 目录查询
Posted
技术标签:
【中文标题】windows 2008 服务器和经典 ASP 目录查询【英文标题】:windows 2008 server and classic ASP catalog queries 【发布时间】:2013-11-03 06:47:18 【问题描述】:我是我们公司的网站管理员,我们正在挑选一家新的网络托管公司。这家老公司几年前向我们出售了一个托管包,并且从那时起就将我们留在了我们当时得到的硬件上:Pentium 3 box、1GB RAM、Windows 2000 服务器。他们告诉我们,我们将不得不选择一个新的托管包并支付更多的钱来获得更新的硬件。我之所以发现这一点,是因为我们用来将我们的站点从开发人员复制到生产环境的 Microsoft 站点服务器现在给我们带来了麻烦,因为它使用了一个未签名的 Java 应用程序,该应用程序很快将不再受支持。所有这一切,公司每月支付超过 300 美元。哎哟。
我遇到的问题是:在 Windows 2000 服务器机器上,有一个索引服务用于生成站点目录,该目录用作站点搜索功能的一部分。我联系了几家网络托管公司,当我询问索引服务时,他们被告知他们无法为我提供相同的目录。一些主机告诉我,如果我购买一个 vps 帐户而不是更便宜的共享服务,我可以获得该服务。
我想知道是否有其他方法可以为我的网站开发搜索功能。有没有办法创建不使用索引服务的搜索功能?
【问题讨论】:
【参考方案1】:如果您的网站内容来自数据库,则可以使用 ASP 和 SQL 开发您自己的搜索工具。
如果您的内容是静态页面,那么也有外部网站服务可用于索引和搜索这些页面,类似于您现在使用的外部服务。 Google 搜索“搜索您的网站”会显示许多功能与您现在使用的产品相似的产品。
另一个类似的选项是您可以创建一个Google Custom Search(提供付费和免费选项),它将为您的网站编制索引,并且很容易将表单添加到您的页面以添加此搜索功能。
【讨论】:
问题出在这里...95% 的网站是静态 html。其他 5% 是动态的,来自通过 ASP 提供的访问数据库。如果我有一个 vps 主机帐户,我知道在 win 2008 & 12 服务器中可以安装索引服务来为我的搜索生成目录。我一直在寻找一种解决方案,我可以在共享托管解决方案中使用它来替换索引服务并生成我自己的目录。我确实注意到了您提到的软件,但由于我专注于共享主机,所以我无法运行这些软件。 我可能会使用 VPS 托管解决方案,这意味着我可以安装索引服务并满足我的需求。 我提到的服务(包括 Google 自定义搜索)是外部服务,因此您的网站托管在哪里并不重要。例如,要使用 Google 自定义搜索,您需要向您的网站添加一个搜索表单,该表单会提交到您网站上的一个页面,该页面上有一些 Google javascript 以显示搜索结果。所有搜索都在 Google 的服务器上完成,您的网站只是显示结果。【参考方案2】:我想您指的是 Microsoft 索引服务,它实际上是自 Windows Server 2003 发布以来的内置组件。称为 Microsoft Windows 搜索服务,它默认安装在某些版本的 Windows Server 上,并且是其他人的可选组件(可选,就像 IIS 在安装时被视为 Windows Server 的可选组件)。在 Windows Server 2003 之前,它是作为 Windows Search Server 在 microsoft.com 上单独下载的。安装后,根据服务器上文档的大小和数量,可能需要几个小时才能建立初始搜索索引。在索引完成构建之前,搜索功能不会返回所有或任何预期结果。
我提到所有这些,因为我实际上发现它默认安装在我们过去使用的主机上而无需询问。因此,我假设您询问过的主机可能没有意识到您指的是 Windows Server 的这个内置组件,您可能想用您的首选主机澄清这一点。
【讨论】:
我确实向首选主机澄清了这一点,有几个人告诉我,它不会作为共享主机解决方案的一部分提供,因为它会占用许多 CPU 周期。他们确实告诉我,如果我使用 VPS 托管解决方案,它将可用。我试图找到的是一个可供我在共享托管环境中使用的替代选项。我确实了解在 VPS 托管解决方案中,我可以完全控制并安装该服务。 需要注意的是,由于 win 服务器现在是 64 位的,我必须启用对 32 位应用程序的支持才能运行 Classic ASP。然后我在某处读到在 32 位环境中查询目录不起作用。我尝试在我的 win 7 PC 上安装该服务并在我的本地 PC 上进行测试并得到一个错误,“Microsoft VBScript runtime error '800a01ad' ActiveX component can't create object'”代码行错误是 Set objQuery = Server.CreateObject("IXSSO.Query") 如果我关闭对 32 位应用程序的支持,我会通过该错误并收到一条消息,“不支持此类接口”,抛出错误的代码是 Set rstResults = objQuery.CreateRecordset("nonsequential")我如何克服这个问题并让搜索页面在 64 位环境中发挥作用,就像在旧版 win 3k 服务器 32 位环境中一样?【参考方案3】:我研究了几种开发搜索功能的替代方法,但它们都不适用于像现在托管方式那样与站点集成的共享托管。我决定专注于 VPS 托管,因为我可以安装索引服务并拥有页面功能,就像现在在我的旧主机上一样,它在 win 2k 服务器机器上运行我的网站。为了测试索引服务的功能,我在我的 win 7 PC 上安装了该服务。在我的 Windows 7 开发机器上安装索引服务后,我学到了 2 件事:
搜索页面只能在 64 位环境中运行。这意味着我必须将搜索页面移动到一个新文件夹并使用 64 位应用程序池来运行该页面。
在 64 位模式下,代码行“Set rstResults = objQuery.CreateRecordset("nonsequential")”返回错误,“不支持此类接口”。谷歌搜索返回的事实是,Windows 更新会破坏功能,并且提供了修补程序来修复此错误。修补程序 #2740317 位于此处:http://support.microsoft.com/kb/2740317
现在我的搜索功能正常工作,我得到了结果。唯一的问题是结果指向 file:///c:/Inetpub/... 而不是 website/path/page.html 我必须从记录集中提取路径字段并使用替换功能删除包含我的站点的文件夹的物理路径。我现在得到一个指向网站上正确文件的相对链接。
【讨论】:
以上是关于windows 2008 服务器和经典 ASP 目录查询的主要内容,如果未能解决你的问题,请参考以下文章
经典 ASP - 使用 Windows 身份验证的 SQL Server 2008 连接字符串
带有 COM 的经典 ASP 在 Windows Server 2008 R2 上抛出“未找到数据源名称且未指定默认驱动程序”
Windows Server 2003 中使用经典 ASP 的 MS Access 数据库
在打开 UAC 的服务器(Windows 2008 R2)上重新启动 Windows 服务(来自 ASP.NET 应用程序)