Виртуальный каталог внутри веб-приложения Orchard - PullRequest
7 голосов
/ 21 февраля 2012

Я хотел бы иметь папку / downloads внутри веб-приложения Orchard, куда я могу направлять клиентов, чтобы они могли загружать файлы, т.е.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.

Ответы [ 3 ]

8 голосов
/ 21 февраля 2012

Нашли исправление благодаря этому сообщению: http://orchard.codeplex.com/discussions/280041

Во-первых, это должно было быть приложение на веб-сайте Orchard, а не просто виртуальный каталог.В IIS можно щелкнуть правой кнопкой мыши виртуальный каталог> преобразовать в приложение.

После этого проблема заключается в том, что файл web.config в Orchard распространяется на дочерние приложения.Чтобы остановить это, вам необходимо добавить <location path="." inheritInChildApplications="false"> вокруг узлов <system.web> и <system.webserver> в файле Orchard web.config.Вы можете прочитать больше о теге местоположения здесь .

После внесения этих изменений я могу без проблем загрузить свой файл test.txt без проблем.

2 голосов
/ 24 марта 2014

Бриллиант, большое спасибо за этот ответ. После реализации этого сразу мои стили 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>

Что исправит ваш стиль в саду, для тех, у кого есть такая проблема.

Он должен быть помещен в файл web.config в корне вашего сайта, непосредственно перед <runtime> и после последнего </location>, который вы только что добавили, чтобы закончить перенос <system.webServer>.

0 голосов
/ 21 декабря 2017

Вам не обязательно взламывать конфигурацию в саду.В аналогичной ситуации мне было достаточно создать 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>

...