0

我必须在 IIS7/VS2008 上应用一些重定向规则,并且对如何部署它有疑问。我们有一个网站而不是 Web 应用程序,因此大多数其他 SO 问题对我没有用。

为了在网站上应用如下规则:

    <rewrite>
       <rules>
       <clear />
          <rule name="Redirect rule1 for Static404Redirects">
            <match url=".*" />
            <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
               <add input="{Static404Redirects:{REQUEST_URI}}" pattern="(.+)" />
             </conditions>
             <action type="Redirect" url="{C:1}" appendQueryString="false" />
           </rule>
        </rules>
    </rewrite>
  1. 在 Bin 文件夹中没有网站名称 .dll。只是一些其他的dll,比如Ajaxtoolkit。
  2. 它应该有任何 dll/程序集/GAC 作为网站吗?
  3. 我可以使用任何 IIS UI 作为规则部分简单地将测试服务器 web.config 复制到生产环境,它应该可以工作。
  4. 更改 web.config 后是否还需要从 IIS 重新启动应用程序?还是新的更改会在保存 web.config 时自行产生影响?

它是否正确?还是我需要做其他事情?恐怕 web.config 更改会导致任何程序集更改/dll/版本或我应该首先想到的任何其他更改?正如我提到的它的网站项目,它甚至没有在 Prod 上安装 VS2008。基本上我想确定我知道我在做什么。

谢谢你!

4

1 回答 1

1

假设您实际上使用的是 IIS7(AFAIK 无法在 Server 2008 上安装 IIS6),上面的代码采用IIS7 Rewrite Module使用的语法。这是一个扩展,默认情况下不与 IIS 一起安装,它需要在每台服务器上单独安装。

1 + 2) 网站(相对于 Web 应用程序)可以编译或未编译部署。如果站点已经编译,那么在 bin 目录中将有一个或多个 dll 文件,其中包含构建站点中使用的对象的代码,以及用于 aspx 页面的占位符文件。编译站点的优点是它的执行速度更快,特别是从“冷启动”(站点不保存在服务器的内存中)开始。如果该站点未编译,它将具有包含代码的 .aspx.cs/.aspx.vb 文件,或者

<script runat="server"> // code here </script> 

.aspx 文件本身中的标签。

3) IIS GUI 只是一种更简单的生成规则的方法,这些规则将放置在 web.config 文件中。在服务器之间复制文件应该可以工作,从您的开发人员复制到实时环境也应该有效(关于将连接字符串等更改为适合实时环境的通常规则适用)。一些开发者会在他们的开发服务器或本地机器上创建规则并以这种方式部署它们。如果您希望您根本不必接触 IIS GUI,只需在代码中编写规则即可。要使规则生效,您需要在每台服务器上安装 IIS 7 Rewriter 模块。

4) 保存或“触摸” web.config 文件将强制重新启动应用程序。进程中的会话数据将丢失(作为否定),但规则应该立即生效 - 不需要 IIS 重置。

更改 web.config 以添加新规则不应破坏您的任何代码或编译的程序集,只要属性和 XML 语法保持有效,就不会破坏明显的破坏性更改 - 更改或删除应用程序密钥或连接字符串、目标框架、自定义错误或调试模式显然会影响您的网站。虽然没有必要重新发布。由于 XML 故意容易出现语法错误,我强烈建议您首先在非实时站点上测试您的更改,弄乱 web.config 是关闭整个站点的最快方法之一。

于 2013-01-16T23:22:16.870 回答