IIS 6
ASP.NET 3.5 (C#.NET)
我们遇到一个问题,即同一组文件的行为会有所不同,具体取决于它是根 IIS 网站还是 IIS 网站下的应用程序。使用生成的网址解析网址 http://msdn.microsoft.com/en-us/library/system.web.ui.control.resolveurl.aspx() 不同 - 即:
<a href="<%=ResolveUrl("~/contact.aspx") %>">Contact Us</a>
- 作为根网站,它会生成:http://contact.aspx http://contact.aspx
- 作为网站下的应用程序,它会生成:http://domainname.org/DSC/contact.aspx http://domainname.org/DSC/contact.aspx
两者都使用相同的文件。第一个示例是其自己的网站,第二个示例是制作成应用程序的虚拟目录(名为 DSC)。两者还使用相同的应用程序池以及相同的配置、文档和安全设置(我确保两者之间 IIS 中的所有设置都相同)。
所有研究都表明 ResolveUrl() 确实引用了网页所在的 IIS 应用程序。我还读过一些地方,即使信息未在 IIS 中完成(在本例中是),根网站也被视为应用程序。因此,它应该生成适当的网址,但事实并非如此。
任何帮助寻找更多的研究来确定哪些设置/配置设置不正确,或者为什么 ResolveUrl() 不应该以编程方式使用。
看一下这个:在 ASP.NET 中从相对路径到绝对路径而不使用波形符 ~ http://www.mycsharpcorner.com/Post.aspx?postID=45。您可以考虑将波浪号 (~) 用法替换为HttpRuntime.AppDomainAppVirtualPath
。如果 Web 应用程序位于服务器根文件夹中,AppDomainAppVirtualPath
仅返回“/”。如果 Web 应用程序位于非根文件夹中,它将返回文件夹的虚拟路径,末尾不带“/”(source http://dotnettipoftheday.org/tips/HttpRuntime.AppDomainAppVirtualPath.aspx).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)