Orchard Web应用程序内的虚拟目录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Orchard Web应用程序内的虚拟目录相关的知识,希望对你有一定的参考价值。

我想在Orchard网络应用程序中有一个/ downloads文件夹,我可以在其中指导客户端,以便他们可以下载文件,即。 www.mydomain.com/downloads/test.txt

在IIS中,我在Orchard网站下面创建了一个虚拟目录(不是应用程序),指向服务器上的下载文件夹。

在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错误。

答案

通过这篇文章找到了修复: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文件,没有任何问题。

另一答案

太棒了,非常感谢你的回答。在这里直接实现之后,我的Orchard样式破了,但在看了那个链接之后,我注意到了这段代码:

<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>之后,你将刚刚添加完成包装<system.webServer>

另一答案

你不一定需要在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>

以上是关于Orchard Web应用程序内的虚拟目录的主要内容,如果未能解决你的问题,请参考以下文章

Orchard源码分析:Orchard.Web.MvcApplication类(Global)

Orchard源码分析:Orchard架构

在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途

为啥软键盘在对话框片段内的 Web 视图中不起作用?

Orchard源码分析:Host相关(Orchard.Environment.DefaultOrchardHost类)

Orchard源码分析(7.2):Controller相关