我在网上搜索了此内容,但找不到任何内容(以及一篇远程相关的帖子),所以我在这里。
我们在 IIS 6 中有多个使用表单例份验证的 ASP.NET 应用程序,每个应用程序都有专用路径。由于路径区分大小写,因此它必须与 URL 的路径部分完全匹配。但是,由于 IIS 6 元数据库中 AppRoot 的大小写不正确(或 IIS UI 中的起始点),每当 URL 先前在服务器上解析并以不正确的大小写发送到客户端时,bowser 都不会将表单 cookie 发送到服务器。
示例:
应用网址 = "https://Test.net/Application1 "
Cookie 路径 =/Application1
元数据库应用程序根 =/LM/W3SVC/1393818691/ROOT/APPLICATIONPATH1
已解析的网址 = "https://Test.net/APPLICATIONPATH1 "
现在来看看根本原因...
在特定情况下,我们在测试服务器上手动创建虚拟目录(与每个应用程序的路径匹配)。然后,我们使用 UI 将虚拟目录导出到 XML 文件,然后将其导入到另一台服务器(假设是生产服务器),此时 IIS 决定将元数据库的 AppRoot 元素大写。
有人能解释一下吗? IIS 上是否有我不知道的设置?我试图避免导入后手动编辑元数据库。这是一个错误吗?
最佳答案
您是否尝试过使用 MSBuild 的 SDC 任务库来设置 IIS 站点?
它使用简单,并且允许您完全自动化部署。
否则,快速修复方法是手动编辑 Metabase.xml:
WINDOWS\system32\inetsrv\Metabase.xml
我以前遇到过这个问题,但在导入 xml 时没有找到解决办法。
关于cookies - 从文件导入虚拟目录时,IIS 6 强制 AppRoot/Starting Point 为大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2632468/