IIS应用程序池缓存错误的URL

时间:2012-12-28 21:08:55

标签: asp.net iis-7

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

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

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

http://masdfg.my.provider.net

IIS认为网址是

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

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

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

3 个答案:

答案 0 :(得分:1)

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

听起来你唯一的问题是当你写回到响应的链接时,他们有时会引用错误的根URL。

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

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

就像我说的那样,我希望我能正确地理解你的问题,如果我没有,我会道歉。

答案 1 :(得分:1)

我知道这是一个很长的镜头,但我的IIS设置遇到了类似的问题。我通过“编辑绑定”转到已经提到的“绑定”窗口来解决它。

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

最后我在

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

添加行

127.0.0.1 www.mydomain.com

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

以管理员身份执行iisreset.exe后,问题就结束了。

答案 2 :(得分:1)

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

如果请求HOST值为masdfg.my.provider.net

,则应该采用第二个URL的唯一时间

此处有三种可能的修复。第一种是设置绑定,并将masdfg.my.provider.net的任何请求转发到www.mysite.com

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

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