【问题标题】:IIS 6 Website root vs Application? ResolveUrl()?IIS 6网站根与应用程序?解析网址()?
【发布时间】:2011-03-08 22:36:12
【问题描述】:

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 中完成(在这种情况下是),根网站也被认为是一个应用程序。因此,它应该产生适当的网址,但不是。

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

【问题讨论】:

    标签: asp.net iis web iis-6


    【解决方案1】:

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

    【讨论】:

    • 你能想到 IIS 中有什么会导致它吗?如果可能,我们会尽量避免在应用程序中进行更改。当然,这是一个“现在就需要”的问题(什么不对?)。因此,如果 IIS 中存在某些内容,则无需更改代码即可完成该配置。
    • 如果您不喜欢代码更改,您可以建议现在只将站点安装在虚拟目录根目录中。
    猜你喜欢
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    • 2014-11-14
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多