Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将querystring添加到ASP.net页面中的.css和.js引用的IIS重写规则?_Javascript_Asp.net_Css_Iis_Url Rewriting - Fatal编程技术网

Javascript 将querystring添加到ASP.net页面中的.css和.js引用的IIS重写规则?

Javascript 将querystring添加到ASP.net页面中的.css和.js引用的IIS重写规则?,javascript,asp.net,css,iis,url-rewriting,Javascript,Asp.net,Css,Iis,Url Rewriting,是否可以将查询字符串作为入站规则的一部分附加到CSS和JS文件引用(例如,“foo.CSS”=>“foo.CSS?v=”,“goo.JS”=>“goo.JS?v=”,例如,“1.2.3”)中?如果是,怎么做 我们需要能够迫使客户端在发布CSS和JS文件后要求提供最新版本的CSS和JS文件。重写规则似乎是这样做的好地方,但我没有任何文档或留言板上关于这样做的帖子 谢谢 我认为你不需要重写规则,你需要一个HTTP过滤器。 它需要动态解析和重写HTTP流上的请求 我认为您需要一个出站规则,以便缓存在

是否可以将查询字符串作为入站规则的一部分附加到CSS和JS文件引用(例如,“foo.CSS”=>“foo.CSS?v=”,“goo.JS”=>“goo.JS?v=”,例如,“1.2.3”)中?如果是,怎么做

我们需要能够迫使客户端在发布CSS和JS文件后要求提供最新版本的CSS和JS文件。重写规则似乎是这样做的好地方,但我没有任何文档或留言板上关于这样做的帖子


谢谢

我认为你不需要重写规则,你需要一个HTTP过滤器。 它需要动态解析和重写HTTP流上的请求


我认为您需要一个出站规则,以便缓存在verison编号更改时请求一个新文件。

我使用以下IIS重写规则执行此操作。您所需要做的就是在进行更新时更改版本号。如果您有任何构建自动化,您可能能够在那里实现自动化

<rewrite>

  <rules>
    <rule name="JS versioning" stopProcessing="true">
      <match url="(.*).js" />
      <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" />
        <add input="{QUERY_STRING}" pattern="version=3911" negate="true" />
      </conditions>
      <action type="Redirect" url="{R:1}.js?version=3911" redirectType="Permanent" />
    </rule>
  </rules>

</rewrite>

本质上,对以.js结尾的url的任何请求都会被拦截并重定向到同一url,但会附加一个带有版本号的查询字符串。需要后续条件来忽略已经具有querystring的URL,否则它将进入无限重写循环


由于您也希望对css文件进行版本设置,您可以将匹配url更新为同时匹配js和css的正则表达式,或者创建一个单独的规则,该规则执行相同的操作,但以css文件为目标。

谢谢。我会调查的。我现在正在做的是将对foo.css的请求重写为{R:1)?v=blah,这似乎是可行的,尽管没有错误并不一定意味着我100%拥有它。哇……那篇文章中的所有内容(两个链接都指向同一篇文章)似乎都反对使用HTTP过滤器处理这种情况。术语“危险”在执行任何响应操作时多次提到。:)文档日期为2003年。当时没有http.sys或集成的托管管线。自从ASP.Net模块/过滤器更加集成以来,IIS有了很大的发展。但是泄漏的代码很危险,因此请清理内存。