IIS 6网站root vs Application? RESOLVEURL()?

时间:2011-03-08 22:36:13

标签: asp.net iis web iis-6

IIS 6 ASP.NET 3.5(C#.NET)

我们遇到的问题是,同一组文件的行为会有所不同,具体取决于它是根IIS网站还是IIS网站下的应用程序。使用ResolveUrl()生成的网址是不同的 - 即:

<a href="<%=ResolveUrl("~/contact.aspx") %>">Contact Us</a>

两者都使用相同的文件。第一个例子是它自己的网站,第二个例子是一个虚拟目录,它被制作成一个应用程序(名为DSC)。两者都使用相同的应用程序池,以及相同的配置,文档和安全设置(我确保两者之间的IIS中的所有设置都相同)。

已经研究过的所有内容都表明ResolveUrl()确实引用了该网页所在的IIS应用程序。我还阅读了几个地方,即使信息没有在IIS中完成(在这种情况下),根网站也被视为一个应用程序。因此,它应该生成适当的网址,但不是。

在寻找更多研究以确定未正确设置哪些设置/配置方面有任何帮助,或者为什么ResolveUrl()不应该以编程方式使用。

1 个答案:

答案 0 :(得分:2)

检查出来:From Relative Path to Absolute Path in ASP.NET without using the Tilde ~。您可以考虑用HttpRuntime.AppDomainAppVirtualPath替换您的波浪号(〜)用法。如果Web应用程序位于服务器根文件夹中,则AppDomainAppVirtualPath仅返回“/”。如果Web应用程序位于非根文件夹中,则返回文件夹的虚拟路径,而不是“/”(source)。