1

环境:

win2003 运行IIS6 服务于调用delphi 代码的asp 页面。

Delphi 代码联系一个需要登录的c# weblogin.asmx服务 ( )。Web服务日志显示登录成功。调试结果表明Context.User.Identity.IsAuthenticated returns true

登录后,delphi 代码会再次检查它是否仍然经过身份验证。Web 服务返回 false -> Context.User.Identity.IsAuthenticated returns false

我们的猜测:运行在IIS6凭据(网络服务?)下的 delphi 代码收到的身份验证 cookie没有保存到磁盘,因此登录丢失。

Filemon 显示'C:\WINDOWS\Temp\Temporary Internet Files'拒绝访问。授予 IIS6用户对该文件夹的管理员权限可以解决问题,但这是不可接受的,因为默认情况下 cookie 应该可以工作。

IIS5兼容模式下运行IIS6可以解决问题,但也不是首选

想要的解决方案:问题的确切原因和配置中可能的最小修改(授予 IUSR 管理员权限不是一个选项)

4

2 回答 2

0

默认情况下,Cookie 确实有效,但您必须有地方存储它们。如果您不想授予对存储它们的正常位置的访问权限,那么您将需要设置另一个您可以授予权限的目录,并将其设置为 IIS6 用户的 Internet 缓存。

于 2008-11-26T14:03:01.100 回答
0

考虑到对于此类问题,您有相当多的潜在问题,一些可能会有所帮助的快速资源,请参阅

IIS5IIS6之间的一个重要区别是Windows 2003在SP1更新中经历了重大的安全锁定。有很多适用于Windows 2000的东西在2003 年将不再适用(而且不应该 - 它们为各种恶作剧打开了大门)。试图追踪IIS6锁定的所有地方可能具有挑战性,相反,我将使用上述资源来追踪人们在使用IIS6时遇到的常见问题。

于 2011-08-26T03:45:32.323 回答