【问题标题】:IIS app pool caches wrong urlIIS 应用程序池缓存错误的 url
【发布时间】:2012-12-14 02:12:11
【问题描述】:

我的生产站点的应用程序池每 2 小时左右回收一次。我注意到当第一次调用该站点时,应用程序池会缓存基本 URL(例如 www.mysite.com)。这是有道理的,因为它用于解析 ASP.NET 中的相对路径,例如~/MyFolder/MyPage.aspx,解析为:

http://www.mysite.com/MyFolder/MyPage.aspx

但是,由于可以通过我们的主机名访问该站点,例如

http://masdfg.my.provider.net

IIS 认为 url 是

http://masdfg.my.provider.net/MyFolder/MyPage.aspx

如您所见,这会导致 SSL 以及其他问题。我怎样才能防止这种情况发生?

更新:解决方法是创建一个 url 重定向。如果有人知道如何防止这种情况,请告诉我。

【问题讨论】:

  • 应用程序池被回收以清除未使用的内存。我们还使用了有时需要刷新的第 3 个 API。
  • 嗨 - 应用程序池“缓存”不会崩溃
  • ASP.NET 以什么方式缓存它?您能否包含一些您看到返回的缓存值的代码?
  • 嗨 Ashley - 在我的代码中,我使用“HttpContext.Current.Request.Url”来获取基本 url。这有时会返回不正确的 url(参见我上面的问题) - 此外,如果我使用“~/mypage.aspx”生成我的 asp.net 链接,则 ~ 可以解析为错误的 URL。
  • 您确定您在 IIS 中的站点绑定是正确的吗? IIS 根目录 > 您的站点 > 右键单击​​ > 编辑绑定。有什么奇怪的吗?

标签: asp.net iis-7


【解决方案1】:

HttpContext.Current.Request.Url 不是可缓存项。该值来自 HTTP 标头的 HOST 值。这意味着它是从请求中传递给应用程序的。

第二个 URL 唯一需要的时间是请求的 HOST 值为 masdfg.my.provider.net

这里有三种可能的修复。首先是设置您的绑定并将对masdfg.my.provider.net 的任何请求转发到www.mysite.com

第二个,因为您的主要问题似乎是关于 SSL 是获取统一通信 (UC) SSL 证书并将其安装在您的服务器上。这将涵盖 mysite.com 和 masdfg.my.provider.net 域名。

第三个是简单地创建一个单独的 IIS 站点,该站点指向与第一个完全相同的生产目录。每个站点只有 1 个它负责的域名。

【讨论】:

    【解决方案2】:

    我知道这是一个漫长的过程,但我的 IIS 设置也遇到了类似的问题。我通过“编辑绑定”进入已经提到的“绑定”窗口解决了这个问题。

    然后我删除了 所有 不需要的绑定,然后添加服务器应响应的主机名 www.mydomain.com。

    最后我在

    处编辑了 windows hosts 文件
    %windir%\System32\drivers\etc\hosts
    

    添加行

    127.0.0.1 www.mydomain.com
    

    这可确保 www.mydomain.com 始终解析为本地计算机。

    以管理员身份执行 iisreset.exe 后,我的问题解决了。

    【讨论】:

      【解决方案3】:

      我希望我正确理解了您的问题,但如果我没有正确理解,请告诉我。

      听起来您唯一的问题是,当您编写响应的链接时,它们有时会引用错误的根 URL。

      我注意到您使用 ~/ 。这将解决并将整个 URL 写入我认为的响应。写响应链接时最好只使用 /。

      因此,在您的示例中,您将编写 /myfolder/mypage.aspx。然后浏览器将解析 / 以表示它来自站点的根地址,无论哪个可能。

      就像我说的,我希望我能正确理解你的问题,如果我没有正确理解你的问题,我深表歉意。

      【讨论】:

      • 感谢您评论“大胡子骆驼”:) - 您的建议只是一种解决方法。我能够以类似的方式解决我的链接,但我更感兴趣的是找出 IIS 这样做的原因以及如何防止它,而不是解决它。我添加了 URL 重写来帮助解决这个问题,但我当然希望我知道如何防止它。
      • 好吧,这并不是一个真正的解决方法,它更符合 DRY 而不是硬编码的东西。虽然,现在我明白你的问题是什么了。这听起来像是一个IIS设置问题。如果您发布您的 IIS 设置,我将非常乐意查看并尝试提供帮助。
      猜你喜欢
      • 1970-01-01
      • 2016-02-05
      • 2010-09-29
      • 2011-10-08
      • 1970-01-01
      • 2011-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多