asp.net – IIS 6网站root vs Application? RESOLVEURL()?

IIS 6

ASP.NET 3.5(C#.NET)

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

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

>作为根网站,它产生:http://contact.aspx
>作为网站下的申请,它产生:http://domainname.org/DSC/contact.aspx

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

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

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

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

点赞