安装到默认网站移动应用程序池

我在将Web应用程序安装到IIS 7.5时遇到问题。 我正在使用VS2010构build标准的Web应用程序安装程序,但是当我安装应用程序时,我希望它被放置在站点的根目录下(而不是在虚拟文件夹中)。 这是一个设置的一个小图:

  • C:\的Inetpub \ wwwroot的\
    • 静态<— IIS默认文件夹
    • APP1
    • APP2
    • APP3
    • ….

每个应用程序都有自己的应用程序池。 静态文件夹使用整个站点默认使用的主应用程序池。

如果我运行安装程序并将虚拟目录字段留空,则一切似乎都正常工作。 问题是,我的其他所有应用程序都被移入默认应用程序池,并最终中断,因为权限是相对的限制。

有谁知道解决这个问题的方法? 我不希望用户必须input.../static/...在网站的URL,所以简单地安装到虚拟目录的“正常”的方式将无法正常工作。

谢谢,

– 丹

经过大量的调查,我认为有一个在Web应用程序安装程序或IIS本身的错误。 因为我暂时停留在Web应用程序安装程序中,所以我是这样解决的:

  1. 将IIS默认文件夹移动到C:\inetpub\wwwroot (反正这是默认的)
  2. 设置整个站点的应用程序池和static是相同的
    1. IIS不会让你跨应用程序池进行URL重写。 如果这是一个问题 – 你必须build立一个完整的反向代理。
  3. 安装了IIS URL重写插件
  4. 用匹配模式创build一个新的URL重写规则(/*)(.*)
  5. 为规则添加条件如下(全部匹配)
    1. input{URL}不匹配^(/*)app1/(.*)
    2. input{URL}不匹配^(/*)app2/(.*)
    3. …每一个应用程序…(是的,这是一个痛苦)
  6. 将操作设置为重写为/static/{R:2}

在我的情况下,我不需要任何出站规则(即我不需要一个完整的反向代理),因为我的应用程序返回有效的URL。

这个解决scheme的好处在于它对用户来说是完全透明的,任何以/(即...a href="/images/file.jpg"... )开头的链接仍然可以工作,因为当最终用户请求/images/file.jpg URL将在内部重写为/static/images/file.jpg

主要的缺点是我必须保持与所有应用程序池最新的匹配模式列表。 但在我的情况下,这不是什么大不了的事情。 我实际上可以自动在web.config文件中注入新的模式string – 但对我来说这不是什么大问题。

另一个缺点是,用户可以在源代码中看到/static/images/...链接,但我并不在意这一点。

所以 – 希望这将有助于未来的人。