5

我在根目录上有一个 Umbraco 站点。它工作正常。

我需要能够提供来自 IIS 的静态(不是 ASP.NET)内容,例如 /foo。(/foo 映射到与主应用程序不同的文件夹结构,例如:

www.example.com     -> d:\sites\example.com
www.example.com/foo -> d:\sites\static\foo
www.example.com/bar -> d:\sites\static\bar
  • 我可以设置一个 IIS 应用程序,但是我继承了父应用程序 web.config,因为这是静态内容,它没有所需的 dll 等(也不应该有它们!)

  • 我可以设置一个 IIS 虚拟目录,并将各种位添加到 web.config 中,以告诉 Umbraco 不要使用该文件夹(umbracoReservedUrls、umbracoReservedPaths)。这行得通,但是它仍然作为主要的 ASP.NET 应用程序运行,我更希望它只是静态的(即,不允许 .NET 运行时)

两者都不理想,因为我们可能有其中一些,因此需要编写所有创建脚本。编辑 4 个 web.config 文件(在 Web 集群中)并不理想。

我想要的是:

  • 创建一个指向正确位置的虚拟目录(或应用程序)。告诉 IIS 将其作为静态内容提供。如果我必须将 web.config 放到文件夹 (/foo) 中,告诉它根本不加载任何东西,那很好(然后我可以使用非 .NET 应用程序池)

我搜索的所有内容都带有“不,无法完成”。我错过了什么?

[编辑]

澄清一下,我不需要 CDN — 我们有一个。我只想让 /foo 成为它自己的文件夹,其中包含一堆 html/css/images(例如 /foo/index.html、/foo/images/logo.png),它们由用户提供,但是不是通过 umbraco — 只是通过 IIS。

4

3 回答 3

3

关于问题中的第二个建议,您可以告诉 IIS 禁止脚本访问。

我只需要做一些与此类似的事情,作为在工作中需要 SSL 托管几天的快速修复,所以我做了:

  1. 将代码放在 Umbraco 站点内自己的文件夹中。

  2. 使文件夹成为自己的应用程序:

    如何在 IIS6 中创建应用程序
    (来源:serverintellect.com

  3. (如果我愿意的话,我可以在这里禁用执行权限,从上面屏幕截图中“仅限脚本”的下拉框中,但我实际上需要执行权限才能进行快速修复。)

  4. 添加了一个最小的 Web.config 来覆盖我不想要的 Umbraco Web.config 的位:

    <configuration>
       <system.web>
          <httpModules>
             <clear/>
          </httpModules>
          <httpHandlers>
             <clear/>
             <add path="*.aspx" verb="*"
               type="System.Web.UI.PageHandlerFactory" validate="true"/>
             <add path="*" verb="GET,HEAD,POST"
               type="System.Web.DefaultHttpHandler" validate="true"/>
             <add path="*" verb="*"
               type="System.Web.HttpMethodNotAllowedHandler" validate="true"/>
          </httpHandlers>
       </system.web>
    </configuration>
    

    (这些处理程序是直接从C:\​Windows\​Microsoft.NET\​Framework64\​v4.0.30319\​Config\​web.config我的笔记本电脑上复制的)

  5. 没有第五步。

快速——而且很脏——但它有效;o)

于 2012-11-22T17:40:04.007 回答
2

也许有点难看,但你能在你的 umbraco 根文件夹中创建一个符号链接,然后像普通文件夹一样提供它吗?(也许还会在 web.config 中添加 umbracoReservedPaths 设置的路径)

于 2012-04-16T13:54:40.277 回答
0

我从来没有找到一个好的解决方案,所以我们最终只是把它放在一个单独的域上,并使用 UrlRewriting 将用户重定向到另一个服务器。

不完美,但它确实有效。

于 2012-05-02T12:41:49.863 回答