我在根上有一个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群集中)并不理想。
我想要的是:
我搜索的所有内容都会出现“不能做,不能做”。我错过了什么吗?
只是为了澄清,我不需要CDN - 我们有一个。我只想让/ foo成为它自己的文件夹,带有一堆html / css / images(例如/foo/index.html,/foo/images/logo.png),这些文件都提供给用户,但是不是通过umbraco - 只是通过IIS。
答案 0 :(得分:3)
根据您在问题中的第二个建议,可以告诉IIS禁止脚本访问。
我只需要做一些与此类似的事情,作为快速解决在工作中需要SSL托管的事情,所以我做了:
将代码放在Umbraco站点内的自己的文件夹中。
将文件夹设为自己的应用程序:
(我可以在这里禁用执行权限,如果我想,请从上面的屏幕截图中的“仅脚本”下拉框中删除,但实际上我需要执行权限才能进行快速修复。)< / p>
添加了一个最小的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
复制的)
没有第五步。
快速 - 非常脏 - 但它有效; o)
答案 1 :(得分:2)
也许有点难看,但是你可以在你的umbraco根文件夹中创建一个符号链接,只是将它作为普通文件夹提供服务吗? (也许还在web.config中添加了umbracoReservedPaths设置的路径)
答案 2 :(得分:0)
我从来没有找到一个很好的解决方案,因此我们最终将它放在一个单独的域上,并使用UrlRewriting将用户重定向到另一个服务器。
不完美,但确实有效。