首页 » 建站技术 » 浏览内容

[IIS总结 3 ]IIS常见问题及解答以及故障分析


2005-09-20 08:40:14 9,784 0 发表评论 字体: 作者:C.K.

体验版 88 元,个人版 128 元,多用户版 288元个人版160元升级到多用户版。

From:http://www.im286.com/viewthread.php?tid=1072095&extra=page%3D1%26filter%3Ddigest

能否在 Windows XP Home Edition 上安装 IIS 或 PWS?

问:我曾在某处读到过,不能在运行 Windows XP Home Edition(家庭版)的计算机上运行/开发 ASP.Net 应用程序。是否有办法在运行 XP 家庭版的计算机上安装 IIS 或 PWS?我有 VS.Net 专业版,但尚未找到用 ASP.Net 进行开发的方法。

答: Windows XP Home Edition(家庭版)不支持 IIS 的任何版本。据我所知,没有任何可靠的方法能让它运行 IIS。Windows XP Home Edition 不适合用作基于 Web 的应用程序的开发平台。升级到 Windows XP Professional 后将允许您在系统上安装 IIS 5.1,这样您就可以用 ASP.Net 进行开发了。

Windows XP Professional 上的 IIS 5.1 是一个全功能的、强大的 Web 服务器,但仅限于使用 10 个同时连接,因为 Windows XP Professional 是一个工作站操作系统而非服务器平台。在将 Windows XP Professional 用作客户端操作系统而非服务器操作系统时,还有其他几点限制。大体上说,这两者的区别,就是将 IIS 5.0 安装在 Windows 2000 Professional 上时与安装在 Windows 2000 Server/Advanced Server 上时您会看到的那些区别。但尽管如此,在使用 .NET 框架开发基于 web 的应用程序时,Windows XP Professional 仍是一种优秀的开发环境。

ISAPI 筛选器能否在独立的进程空间中运行?

问: IIS 5.0 允许 ISAPI 扩展在独立的进程空间运行。ISAPI 筛选器是否也能在独立的进程空间运行呢?在我们安装一个包含 ISAPI 筛选器的软件后,我们一个客户的 IIS 服务器每过两三天就重启一次。最后一次故障转储显示 inetinfo.exe 因为“除以 0 的错误”而崩溃,但它在 ISAPI 筛选器中没有崩溃。如果能在独立的进程空间运行 ISAPI 就好了,这样它就不会与 inetinfo.exe 冲突。

答:再重述一次,针对在 web 服务器上运行这一目的而编写的程序有特定的要求。例如,您不能通过 URL 来调用 Notepad.exe 的一个实例并期望在客户端系统上看到记事本窗口。为让一个可执行文件(不是 CGI)与来自 IIS 的请求交互,需要用 ISAPI 来编写它。ISAPI 的意思是“Internet 服务器应用程序编程接口”。ISAPI 可执行文件分两类–扩展和筛选器。

ISAPI 扩展可从像 http://localhost/myisapi.dll 这样的 URL 直接调用。假定您将 IIS 配置为允许执行目录上的“脚本和可执行文件”而且用户具有 NTFS“执行”权限,则该 dll 将可以运行。IIS 允许您指定让应用程序在进程中运行(作为 inetinfo 的一部分来运行)还是在进程外运行(在 IIS 4 上作为 MTX 的一部分运行,或在 IIS 5.x 上作为 dllhost 的一部分运行)。当一个应用程序在进程外运行时,inetinfo 就会与您所说的那类问题隔离开,不受其影响。如果应用程序失败,则 web 服务器也将失败。

而 ISAPI 筛选器则全然不同。ISAPI 筛选器能够修改传入和传出 IIS 的数据流。所以,它们有强大的能力,可用来实现自定义的日志记录、身份验证,也可用来修改数据流。IIS 5 的 ISAPI 筛选器中实现的功能包括数据压缩、简要身份验证和 URLScan

因为筛选器在 IIS 中扮演着这样一种重要角色,所以在设计上,它们总作为 inetinfo 的一部分在进程中运行。因此,如您所知,正确构造 ISAPI 筛选器对于服务器的正常运行来说是十分重要的。我的建议是,您可以让 Microsoft 产品支持服务与您一道找出问题所在,因为这类异常的诊查工作可能会相当难。

就这一问题,有几种新技术可能会使您的工作略轻松一点。一是期望使用 IIS 6。由于它采用新的体系结构,所有 ISAPI 筛选器都在进程外运行。这样可让您实现将 web 服务器与反复无常的 ISAPI 筛选器隔离起来的目标,但并没有真正解决问题。为最终解决问题,请评估一下 .NET 语言在实现 ISAPI 筛选器方面的能力。我估计您会发现,用 .NET 实现同样的功能,将比采用 C++ 语言的标准 ISAPI 筛选器设计要简单得多。
使用 WebDAV 从 ASP 编辑文档的代码示例

问:在哪里能找到使用 WebDAV 从 asp 编辑文档的代码示例?

答:在使用 IIS 上的脚本中的 WebDAV 时,您最有可能使用的是 ASP.Net 的 WebClient 类。如果您在使用 Windows XP 或 Windows .NET 服务器,则操作系统中已包含 WebDAV 功能。这使您可以像使用 UNC 路径那样,用 HTTP 来引用一个 web 服务器上的文件。例如,您可以用 NET USE * http://servername/directory 命令来映射一个驱动器,然后用该驱动器符号访问此位置。或者,您也可以创建一个用作 WebDAV 客户端的 COM 对象。您可以用此对象向 IIS 5.x 或 IIS 6.0 发出 WebDAV 操作命令。

另外,如果您在 MSDN 上搜索 WebDAV,您会找到很多关于如何用 XML 为 Exchange 和其他 Microsoft 服务器创建 WebDAV 查询的示例。在 Microsoft Exchange 2000 Server SDK 中有一个 WebDAV 示例应用程序。

尝试用 ASP 访问数据库时“访问被拒绝”

问:我们在使用 ASP 访问一个数据库,但当我们向数据库中写入新内容时,总是出现“访问被拒绝”这一结果。在运行 NT 4.0 工作站和运行与之相当的 web 服务器时 ASP 页没有问题,但升级到装有 IIS 5.1 的 Windows XP Professional 后,它就无法使用了。问题好像出在某些目录的访问权限上,但我们怎样才能确定问题究竟在何处呢?

答:有一种极棒的免费实用工具,叫做 Filemon,可以到 http://www.sysinternals.com 上找到它。在我讲授 IIS 时,我让学生们将此工具保存在软盘上,不管到哪里都随身带着它。我并不完全是在开玩笑。您可以用 Filemon 快速诊断出多数权限问题,因为它可以实时显示服务器上被访问的所有文件、调用进程的名称以及访问结果。这样,对于任何“访问被拒绝”消息,不管问题在嵌套的 include 中埋多深,也不管临时索引有多模糊–都可轻松找出。

如果某一应用程序在一个操作系统上可以使用,而在操作系统升级后它无法工作了,这会让人很沮丧。不过,这类问题往往都很有启发性。IIS 4 和 IIS 5 之间存在的一种差异与 COM 和 COM+ 之间的差异有关。在 IIS 5 中,当一个 COM+ 对象代表用户访问文件时,其默认行为是使用用户的安全上下文进行访问。在 IIS 4 中则不是这样。所以,当您将包含 COM 的应用程序从 IIS 4 迁移到 IIS 5 时,您可能需要提供针对这些文件的用户权限,尽管在 IIS 4 中不要求提供这些权限。有时这可能不大方便,比如您所遇到的情况;但是,在应用程序的安全设计方面,这确实是一项改进。尽管您可能没有使用自定义 COM 对象访问数据库,但 COM 在本机 IIS 组件中的应用很广泛。

体现这一要求的场合,是在需要授予对 Access 使用的临时文件夹的权限以及需要向创建数据库请求的用户授予权限时。有关更多信息,请参阅 Microsoft 知识库文章 Q210457Q271071

如何在不恢复原设置的情况下运行 IIS 锁定工具

问:我们在我们的服务器上运行了“IIS 锁定”工具,它在对系统执行一些基本的安全设置修改时看起来很成功。但在运行此工具后,我们又给服务器添加了一些功能和内容,然后想再次运行此工具。然而,当我们启动 IIS 锁定向导时,它显示:

如果您的浏览器不支持内嵌框,请单击此处 在单独的页中查看。

在这种情况下,我们不想还原到以前的设置,因为这样做会让我们丢掉存储在元数据库中的、对 IIS 配置所做的更改。我们怎样才能再次运行 IIS 锁定工具而又不用先执行还原呢?

答:在我看来,IIS 锁定工具是 Microsoft 真正的压轴戏。如您所说,此工具让您能够轻松而又显著地增加您服务器的安全性。运行此工具后,它将其操作历史存储在位于以下位置的一个文件中:system32inetsrv。您将可以在以下文件中找到此信息:

– Oblt-rep.log
– Oblt-once.md0
– Oblt-mb.md0

如果您运行了上面显示的“撤销”任务,则还会有一个 Oblt-undone.log 文件。

如果您删除这些文件,则将启动向导,好像没有运行过 IIS 锁定工具一样。据我所知,重复执行此过程没有什么风险。但在这样做之前,一定要为 metabase.bin 制作一个副本。

因为这一方法能够让您像没有运行过锁定工具那样再次运行它,但又不撤销该锁定工具第一次运行时实现的设置或对它们“解除锁定”,所以对于您所说的情形,此方法应当行得通。

如何发送用以实现重定向的查询字符串信息

问:在我们最初的Web服务器配置方案中,多个文件夹中均包含称作browse.asp的页面。为简化设计方案,我们目前只在单一文件夹中保留了一个browse.asp文件。然而,服务器目前仍然接受来自用户且要求在原先位置上寻找borwse.asp文件的服务请求。我希望将这些请求重定向到存放browse.asp文件的新位置上。通过使用IIS所内建的重定向功能,这项工作看起来似乎非常简单,然而,在实际处理过程中,查询字符串信息好像总是被丢失。举例来说,我们将针对http://servername/oldfolder/browse.asp的请求重定向至http://servername/newfolder/browse.asp。当用户向服务器发送形式为http://servername/oldfolder/browse.asp?cat=135的URL时,重定向操作虽然能够执行,但却无法传递查询字符串。请问是否存在某种方式能够允许IIS发送从原始请求URL中提取的查询字符串信息?
答:在指定IIS如何对URL进行重定向方面,IIS为您提供了相当程度的灵活性。IIS中所包含的一项鲜为人知但却非常实用的特性能够允许您在重定向过程中使用变量,从而实现了能够精确指定向目标URL传递哪些内容的高级控制能力。举例来说,在您所描述的情况下,右键单击原有browse.asp文件,在“文件”选项卡上选择“重定向至URL”并输入http://servername/newfolder/browse.asp$Q。这种设置方式将使用内建服务器重定向变量$Q将原有URL中所包含的查询字符串部分内容发送到新的位置上。以下表格列出了在线IIS 5帮助文件以及编号为Q313074的Microsoft知识库文章中所包含的有关查询字符串的详细信息。

变量
描述
举例
$S
对请求URL中相匹配的后缀信息进行解析。相匹配的后缀信息是指原始URL中重定向URL被替代后所剩余的部分。

如果将/scripts重定向为/newscripts且原始请求URL为/scripts/program.exe,则/program.exe即为后缀信息。服务器将自动执行后缀替换操作,$S变量仅用于同其它变量配合使用。

$P
对原始URL中的参数进行解析。

举例来说,如果原始URL为/scripts/myscript.asp?number=1,那么,字符串“number=1”将被映射到目标URL中去。
$Q
对于从原始URL中所提取出的问号和参数进行解析。
举例来说,如果原始URL为/scripts/myscript.asp?number=1,那么,字符串“?number=1”将被映射到目标URL中去。
$V
对于请求URL中除服务器名称以外的其它信息进行解析。
举例来说,如果原始URL为//myserver/scripts/myscript.asp,那么,字符串“/scripts/myscript.asp”将被映射到目标URL中去。
$0 至$9
对请求URL中与指定通配符相匹配的部分进行解析。
举例来说,如果针对最低级别的目录名称(如*/default.htm)使用一个通配符,那么,URL中包含Default.htm的目录名称部分将被转发。
!
不进行重定向。
使用这个变量以防止对虚拟目录中已经实现重定向的子目录或独立文件进行再次重定向。

网站统计 Statistics

  • 创建时间: 2005年1月3日 距今5067 天
  • 日志总数: 2461
  • 评论总数: 630
  • 标签总数: 654
  • 链接总数: 273
  • 最后更新: 2018-8-31 17:57:04
  • 您是本站第 14172593 位访客

广告区 Guǎng Gào