3

我已经在网上搜索了这个并且找不到任何东西(以及一个远程相关的帖子),所以我在这里。

我们在 IIS 6 中有多个使用表单身份验证的 ASP.NET 应用程序,每个应用程序都有专用路径。由于路径区分大小写,因此它必须与 URL 的路径部分完全匹配。但是,由于 IIS 6 Metabase for AppRoot(或 IIS UI 中的起点)的大小写不正确,只要 URL 先前在服务器上解析并以不正确的大小写发送到客户端,bowser 就不会将表单 cookie 发送到服务器。

示例:
App URL = " https://Test.net/Application1 "
Cookie 路径= /Application1
Metabase AppRoot = /LM/W3SVC/1393818691/ROOT/APPLICATIONPATH1
Resolved URL = " https://Test.net/APPLICATIONPATH1 "

现在到根本原因...
我们在特定情况下手动在测试服务器上创建虚拟目录(匹配每个应用程序的路径)。然后,我们使用 UI 将虚拟目录导出到 XML 文件,然后将其导入到另一台服务器(比如说生产),此时 IIS 决定将元数据库的 AppRoot 元素大写。

任何人都可以对此有所了解吗?IIS 上是否有我不知道的设置?我试图避免在导入后手动编辑元数据库。那是一个错误吗?

4

2 回答 2

1

您是否尝试过使用 MSBuild 的 SDC 任务库来设置您的 IIS 站点?

CodePlex 网站

它使用简单,可让您的部署完全自动化。

否则,快速修复将是手动编辑 Metabase.xml:

WINDOWS\system32\inetsrv\Metabase.xml

我以前遇到过这个问题,在导入xml时找不到解决办法。

于 2010-04-23T14:54:02.257 回答
0

我找到了另一种解决方法...

在应用程序属性中,我删除了应用程序并重新启动了 IIS 并再次添加了应用程序。重新启动会强制更新磁盘中的元数据库并删除错误的条目。如果不重新启动,元数据库仍然会有大写的入口。创建新应用程序后,它将以正确的大小写添加到元数据库中,问题就解决了。

可能要做的事情更多,但它比直接更改元数据库更安全!

于 2011-05-30T14:52:01.537 回答