我想在Orchard网络应用程序中有一个/ downloads文件夹,我可以在其中指导客户端,以便他们可以下载文件,即。 www.mydomain.com/downloads/test.txt
在IIS中,我在Orchard网站下创建了一个虚拟目录(不是应用程序),指向服务器上的downloads文件夹。
在Orchard Global.ascx文件中,我添加了以下内容,认为这是路由问题:
public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("downloads/{*pathInfo}"); // added this IgnoreRoute
}
不是100%确定是否需要。
但是,当我下载文件www.mydomain.com/downloads/test.txt时,我仍然收到404错误。
答案 0 :(得分:8)
感谢此帖子找到了解决方法:http://orchard.codeplex.com/discussions/280041
首先,它需要是Orchard网站下的应用程序,而不仅仅是虚拟目录。在IIS中,您可以右键单击虚拟目录>转换为应用程序。
之后,问题是Orchard中的web.config传播到子应用程序。要停止此操作,您需要在Orchard的web.config文件中的<location path="." inheritInChildApplications="false">
和<system.web>
节点周围添加<system.webserver>
。您可以在地址标记here上阅读更多内容。
完成这些更改后,我可以成功下载我的test.txt文件,没有任何问题。
答案 1 :(得分:2)
<location path="Themes">
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers accessPolicy="Script">
<remove name="StaticFile" />
</handlers>
</system.webServer>
</location>
<location path="Core">
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers accessPolicy="Script">
<remove name="StaticFile" />
</handlers>
</system.webServer>
</location>
<location path="Media">
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers accessPolicy="Script">
<remove name="StaticFile" />
</handlers>
</system.webServer>
</location>
<location path="Modules">
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers accessPolicy="Script">
<remove name="StaticFile" />
</handlers>
</system.webServer>
</location>
对于任何有此问题的人来说,这将修复您的Orchard风格。
应该放在网站根目录中的web.config文件中,就在<runtime>
之前和刚刚添加的最后一个</location>
之后完成包装{{1} }。
答案 2 :(得分:0)
你不一定需要在orchard下破解配置。 对于我来说,在类似的情况下,足以在虚拟目录下创建一个web.config,其中包含以下内容:
<configuration>
<system.webServer>
<handlers accessPolicy="Read, Script">
<clear />
<add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Script" />
</handlers>
</system.webServer>