禁用Web应用程序中的Dns缓存/关闭打开连接

时间:2017-08-02 22:04:31

标签: asp.net web-applications dns web-config

我目前正在使用ASP.NET Web应用程序(基本VS2017 MVC模板),并且由于需要在两个应用程序之间切换,我需要完全禁用DNS缓存浏览器端,以及关闭所有打开的连接。目前,即使更改了DNS记录,Chrome和IE仍然会路由到应该死的页面。

我试过的帖子:

对于最后一个,我不确定我是否按预期工作。应用上述每个标题后,我的标题是:

响应标题:

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记录的任何建议将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:0)

事实证明问题确实是“保持活跃”的标题。更具体地说,导致的开放连接绕过了任何Dns查找。访问IIS管理器并更改HTTP响应标头以禁用keep-alive会强制浏览器每次重新检查Dns记录。