在 IIS 中我有一个带有 .Net 应用程序的网站,可以像这样访问:
http://site1.example.com/myapp
该网站需要身份验证,因此当我访问它时,它会按预期重定向到http://site1.example.com/myapp/login.asx
我导出了配置,然后使用该文件在同一台服务器下创建一个新站点。现在,当我访问新站点时http://site2.example.com/myapp,它会重定向到http://site2.example.com/我的APP/login.aspx。请注意应用程序名称的大写。
在我导入 xml 配置文件之前,我对其进行了编辑,为应用程序设置了不同的根目录(我将现有目录的副本放在那里),所以这不是问题。
当我查看 MetaBase.xml 时,新创建站点中虚拟目录的 AppRoot 设置为 /LM/W3SVC/1584782141/Root/我的APP,而在导出的 xml 文件中以及在 Metabase.xml 中也是如此,但对于原始虚拟目录,它是小写的,正如它应该的那样。
我编辑了 MetaBase.xml(在 IIS 中允许在线编辑 metabase)并保存了它。没有任何变化。我重新加载了 Metabase,更正已到位,但它就是不起作用 - 它总是重定向到大写版本的 URL。
仅当重定向到 login.aspx 时才会发生这种情况。如果我直接点击登录页面 - 即我在浏览器中输入网址,它会保持我输入的状态。
另外,如果我点击目录中的“未受保护”页面,它会保持原样。
还有什么想法我可以在哪里解决这个问题?
答案1
我在 IIS 6 中发现了完全相同的问题。我在网络上的其他地方找到了一些关于此问题的参考资料;我认为这样做的人并不多,因此不会遇到此错误。修复方法是允许直接编辑元数据库,然后编辑它以将 AppRoot 更改为正确的大小写。
您说您已经做到了。它对我来说总是有效的;这就是我们在环境中部署新客户的方式。尝试回收应用程序池,并确保刷新浏览器中的缓存和 cookie。
答案2
我同意 mfinni 的评论。你所做的应该有效。它只会在重定向时发生,因此如果你直接点击 URL 则不会发生,但当 ASP.NET 重定向到登录页面时会发生。
我的建议是搜索元数据库中的其余部分以查找其他引用。您可能已经捕获了其中之一。然后执行应用程序池回收(iisreset 是最后的手段)。只要您确认元数据库中不存在大写的 MYAPP,那么在应用程序池回收后您就应该可以设置了。