IIS 6网站根目录与应用程序有什么区别?ResolveUrl()是什么?

4

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

我们遇到了一个问题,同一组文件在作为根IIS网站和作为IIS网站下的应用程序时表现不同。使用ResolveUrl()生成的URL是不同的,即:

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

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

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

寻找更多的研究来确定哪些设置或配置不正确,或者为什么应该编程使用 ResolveUrl() 未能达到预期的效果。

1个回答

2

看看这个:ASP.NET中从相对路径到绝对路径的转换,不使用波浪线~。您可以考虑将波浪线(~)替换为HttpRuntime.AppDomainAppVirtualPath。如果Web应用程序位于服务器根文件夹中,则AppDomainAppVirtualPath仅返回“/”。如果Web应用程序位于非根文件夹中,则返回文件夹的虚拟路径,但末尾没有“/” (来源)。


你能想到IIS中有什么原因吗?如果可能的话,我们正在尝试避免应用程序内部的更改。当然,这是一种“现在就需要”的问题(什么不是呢?)。因此,如果IIS中有某些配置可以完成,而无需更改代码,则最好不要更改应用程序。 - Glenda Gable
如果您不喜欢更改代码,您可以建议目前只将站点安装在虚拟目录根目录中。 - Mike Atlas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接