环境:
win2003运行IIS6,提供调用delphi代码的asp页面。
Delphi代码与 c#webservice 联系,需要登录(login.asmx
)。 Webservice日志显示登录成功。调试结果显示Context.User.Identity.IsAuthenticated returns true
。
登录后,如果仍然进行身份验证,delphi代码将进行双重检查。 Webservice返回false - > Context.User.Identity.IsAuthenticated returns false
。
我们的猜测:在 IIS6 凭据(网络服务?)下运行的delphi代码收到的身份验证cookie不会保存到磁盘,因此登录丢失。
Filemon显示'C:\WINDOWS\Temp\Temporary Internet Files'
访问被拒绝。在该文件夹上提供 IIS6 用户管理员权限可以解决问题,但由于Cookie默认情况下应该可以使用,因此无法接受。
在 IIS5 兼容模式下运行 IIS6 可修复此问题,但也不是首选
通缉解决方案:确切的问题原因和配置中可能的最小修改(授予IUSR管理员权限不是一种选择)
答案 0 :(得分:0)
Cookie默认情况下可以正常工作,但您必须在某处存储它们。如果您不想访问存储它们的正常位置,则需要设置另一个可以授予权限的目录,并将其设置为IIS6用户的Internet缓存。
答案 1 :(得分:0)
一些快速资源可能有所帮助,因为对于此类问题,您有相当多的潜在问题,请参阅this。
IIS5 与 IIS6 之间的一个重要区别是 Windows 2003 在 SP1 中经历了重大的安全锁定更新。有很多东西适用于 Windows 2000 ,但不会在 2003 中(并且不应该 - 它们为各种各样的恶作剧打开了大门)。试图追踪 IIS6 锁定内容的所有地方可能具有挑战性,相反,我会使用上述资源来追踪人们遇到的常见问题 IIS6 。