我目前正在使用ASP.NET Web应用程序(基本VS2017 MVC模板),并且由于需要在两个应用程序之间切换,我需要完全禁用DNS缓存浏览器端,以及关闭所有打开的连接。目前,即使更改了DNS记录,Chrome和IE仍然会路由到应该死的页面。
我试过的帖子:
cacheControlMaxAge
低,然后使用cacheControlMode="DisableCache"
对于最后一个,我不确定我是否按预期工作。应用上述每个标题后,我的标题是:
响应标题:
HTTP/1.1 200 OK
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Content-Length: 1079
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Expires: 0
Vary: Accept-Encoding
Server: Microsoft-IIS/8.0
X-AspNetMvc-Version: 5.2
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Wed, 02 Aug 2017 21:36:50 GMT
请求标题:
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding:gzip, deflate
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:ARRAffinity=789fe7bbe28c722b0920137dba18498fceae0426a05f2d26c581fb12b875c8d9
Host:[redacted]
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36
keep-alive
似乎仍然可以启用此请求,但我不知道这是否会产生任何影响。
由于VS中的默认设置,我还有两个Web.config文件。我一直在改变两者,看看是什么棒。以下是编辑部分:
视图/ Web.config中:
<system.webServer>
<staticContent>
<clientCache cacheControlMode="DisableCache" />
</staticContent>
<httpProtocol allowKeepAlive="false" />
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
APPNAME / Web.config中
<system.webServer>
<staticContent>
<clientCache cacheControlMode="DisableCache" />
</staticContent>
<httpProtocol allowKeepAlive="false" />
<validation validateIntegratedModeConfiguration="false" />
<modules>
<remove name="ApplicationInsightsWebTracking" />
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" />
</modules>
</system.webServer>
我最好的猜测是我的浏览器没有重新检查DNS记录,因为使用nplookup检查它会给出重定向的位置,即使旧页面仍在运行。使用Wireshark查看网络流量显示连接保持打开状态,这可能是原因所在。关于如何强制浏览器重新检查DNS记录的任何建议将不胜感激。提前谢谢。
答案 0 :(得分:0)
事实证明问题确实是“保持活跃”的标题。更具体地说,导致的开放连接绕过了任何Dns查找。访问IIS管理器并更改HTTP响应标头以禁用keep-alive会强制浏览器每次重新检查Dns记录。